2012-05-29 238 views
5

我想知道什麼時候撥打電話時需要「空」HttpServletRequest.getSession(false)HttpServletRequest.getSession(false):它什麼時候返回null?

另外:在HttpSession上有很好的教程嗎?我想獲得詳細信息:when to invalidate()?後果是什麼?我是否需要檢查返回的HttpSession是否有效? ... < ==請在評論中回答。

+0

當我意識到某些搜索引擎沒有兌現我的robots.txt文件時,我完全是這樣做的。簡而言之,您可以使用false作爲參數調用getSession(boolean)。如果有,則返回會話;如果沒有,則返回null。然後,在會話上調用.getAttributeNames(),在會話失敗時(超時,關閉)拋出IllegalStateException。 – 0xCAFEBABE

回答

4

你幾乎不應該期待空值。正如文檔所述,如果請求沒有活動會話(通常,您會在請求的過濾器鏈中檢查該請求),將創建一個會話。如果你從這裏得到一個空值,我打賭底層操作系統存在問題:沒有足夠的內存來產生會話。

+0

下面是帶我去問這個問題的例子:http://stackoverflow.com/questions/3080203/how-could-randomly-my-session-is-null。我想知道是否有更多這樣的案例。其他人是否同意爲會話過濾檢查是一個好主意? – AndrewBourgeois

+0

正如海報所說,他嘗試了getSession(true),根據我的經驗和文檔將創建會話,如果它不存在。如果沒有創建,我敢打賭,這是一個有限的資源或其他問題的問題(正如一位海報人員所建議的,也許是一種反釣魚技術),但我對提到的應用服務器中的任何一個都不熟悉( tomcat的)。 – 0xCAFEBABE

+0

好的,所以在正常情況下(你的應用程序正在運行足夠的資源,...),你不應該得到空。足夠好(我會把這個開放一天,以便其他人可以評論,如果需要)。 – AndrewBourgeois

相關問題