2009-12-18 76 views
1

我在web.xml中將會話超時設置爲5分鐘。一旦會話過期,sessionDestroyed()將被執行。會議何時會過期?

但是,只要瀏覽器窗口仍然存在,我希望會話處於活動狀態。所以在每個JSP頁面中都有一段JavaScript代碼,每隔100秒就會訪問一次服務器上的圖像。關於這部分的基本概念可以在 http://www.intelliproject.net/articles/showArticle/index/js_session_expired

但是,sessionDestroyed()仍然會在5分鐘內執行。這裏是我的問題,爲什麼會觸發sessionTimeout事件,即使我每隔100秒都會訪問它?

+0

你的web.xml是什麼樣的?我在網站上使用了類似的機制,它的工作方式與您所描述的一樣。 – 2009-12-18 19:25:47

回答

3

使用firebug,打開net選項卡並觀察javascript請求。您應該爲每個圖像GET接收HTTP 200,並且每個網址應該在最後附加隨機數字。您應該使用時間戳,而不是隨機數,因爲隨機數最終可能會重複並將用戶註銷。

您是否有示例頁面發生了這種情況?

+0

謝謝你的回覆。我已經爲你製作了這個測試頁面: http://secure10.olemiss.edu/hdstore/test.jsp 但是我不認爲它有幫助。 – lonelyloner 2009-12-18 17:56:10

+0

檢查web.xml的內容:http://secure10.olemiss.edu/hdstore/test.jsp – lonelyloner 2009-12-18 20:21:36

2
  1. 確保您的JS調用執行 - 沒有JS錯誤(見錯誤控制檯),而200則返回
  2. 在圖像的結尾不要使用隨機參數 - 這是不能保證旁路緩存。 Istead設置訪問資源的Expires/Cache-Control標題
  3. 請勿使用圖像,請使用空文本(jsp)文件。您也可以在那裏手動設置標題。
+0

謝謝。你能告訴我如何檢查'200返回'嗎? – lonelyloner 2009-12-18 21:02:20

+0

正如斯蒂芬肯德爾建議 - 使用螢火蟲 – Bozho 2009-12-18 21:18:25

+0

我測試了它並返回了304。使用一個Filter或一個具有正確響應頭的虛擬JSP頁面來禁用緩存請求。 – BalusC 2009-12-18 22:03:20