Session的建立與銷燬時機
阿新 • • 發佈:2018-12-14
- 客戶端第一次訪問jsp檔案,jsp被翻譯成Servlet時會自動建立Session,此後客戶端再次訪問就會帶著JSESSIONID過來。
- 當客戶端重啟瀏覽器時,客戶端的JSESSIONID被銷燬(此時服務端的Session沒有受影響),客戶端再次訪問瀏覽器沒有帶著JSESSIONID,服務端將再次為客戶建立Session。
- 在jsp檔案page指令裡設定session="false",客戶端訪問此jsp將不會建立Session。
- 客戶端訪問Servlet時不會建立Session,只有在通過request.getSession()或是跳轉到jsp檔案時才建立Session。
tomcat預設session超時時間為30分鐘,可以根據需要修改,負數或0為不限制session失效時間。這裡要注意這個session設定的時間是根據伺服器來計算的,而不是客戶端。所以如果在除錯程式,應該是修改伺服器端時間來測試,而不是客戶端。
<session-config> <session-timeout>30</session-timeout> </session-config>
通過Java程式碼設定
session.setMaxInactiveInterval(30*60); // 以秒為單位,即在沒有活動30分鐘後,session將失效
伺服器端呼叫了HttpSession的invalidate()方法。
退出銷燬session的Action方法 /** * 使用者退出的方法 */ public String quit(){ // 銷燬session ServletActionContext.getRequest().getSession().invalidate(); return "quit"; }
注意!如果伺服器正常關閉不會銷燬
private static final long serialVersionUID = 1L;