Session的創建與銷毀時機


  • 客戶端第一次訪問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";
    }

 

注意!如果服務器正常關閉不會銷毀

服務器正常關閉不銷毀session,()session會存到我們的硬盤中,也就是我們正常的點擊stop server()會在tomcat的work的Catalina\localhost\項目名稱下面生成一個文件SESSIONS(執行序列化),當服務器再次啟動的時候會加載此文件(反序列化),倘若沒有實現序列化接口(Serializable)可能會報錯因為序列化和反序列化會依據一個id:

private static final long serialVersionUID = 1L;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM