我不確定如何在這裏標題的標題,因爲我不確定如何去尋找答案。Java中是否有請求上下文?
我有一個處理請求的java servlet引擎。假設我們有doGet請求:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//set up user data
//do whatever the user requested
SomeClass c = new SomeClass();
c.doSomething();
}
現在,在doSomething中,我希望能夠訪問哪個用戶提出請求。現在,我通過創建一個Java對象並將它傳遞到哪裏,我需要做的是:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//set up user data
MyUserObj userObj = new MyUserObj();
userObj.setId('123');
//do whatever the user requested
SomeClass c = new SomeClass(userObj);
c.doSomething();
}
通過這樣做,我有機會獲得MyUserObj的實例,它可以沿着如果需要,可以進一步通過。
這感覺馬虎。在asp.net MVC3中(我目前正在學習它,在我開始學習java之後開始學習,但發現這非常方便,所以讓我重新思考我是如何在java中進行的),例如,我可以存儲當前項目像這樣的線程:HttpContext.Current.Items.Add("myId", "123")
。然後可以在其他函數中使用HttpContext
,而不必傳遞對象。
是否有在Java中的方式來設置每個請求一些變量(或甚至設置MyUserObject
稍後訪問)而不經過對象通過作爲參數?
如果這是一種常見的已經回答的問題隨時給我指出正確的方向,因爲我不知道如何句話吧。
我自由地編輯了你的標題。請驗證它是否是一個好的 – Bozho 2012-04-17 18:48:51
我只是明確地傳遞它,隱式狀態和依賴關係對可維護性不利。像Spring這樣的框架應該明確地幫助刪除一些樣板和混亂。 – millimoose 2012-04-17 18:48:54
如果你理解我的問題,那麼我相信你的標題編輯比我原來的標題更好:) – Two13 2012-04-17 18:55:49