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代碼設置tomcat

session.setMaxInactiveInterval(30*60); // 以秒爲單位,即在沒有活動30分鐘後,session將失效

服務器端調用了HttpSession的invalidate()方法。服務器

退出銷燬session的Action方法
  /**
     * 用戶退出的方法
     */
    public String quit(){
        // 銷燬session
        ServletActionContext.getRequest().getSession().invalidate();
        return "quit";
    }

 

注意!若是服務器正常關閉不會銷燬session

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

private static final long serialVersionUID = 1L;
相關文章
相關標籤/搜索