【概述】

之前文章中介紹過Session,Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。這就是Session。客戶端瀏覽器再次訪問時只需要從該Session中查找該客戶的狀態就可以了。今天我們來聊一下如果銷毀session。

【Session的銷毀】

1.關閉瀏覽

關閉瀏覽器的操作,再次打開瀏覽器時就會發現沒有辦法自動登錄了,需要重新輸入用戶名和密碼。這時就代表着session被結束了,但是並不意味着此時的session就是被銷毀了。因為session 的創建和銷毀是在服務器端進行的,當瀏覽器訪問服務器就會創建一個sessionid,瀏覽器通過這個ID來訪問服務器中所存儲的session,當關閉瀏覽器后,再次打開瀏覽器訪問服務器,你的瀏覽器已經失憶了,他忘記了之前的那個sessionid,所以他也就找不到了服務器端他的session內容,所以你只有再次登錄,那么這時就會創建一個新的sessionid,存入一個新的session內容,而不是之前的那個id。而創建的session由服務器自己控制銷毀,當然也可以在服務器端代碼中銷毀。

2.設置Session過期

A.在web容器中設置(以tomcat為例):在tomcat-7.0\conf\web.xml中設置,以下是tomcat7.0中默認配置:

30

tomcat默認session超時時間為30分鍾,可以根據需要修改,負數或0為不限制session失效時間。這里要注意這個session設置的時間是根據服務器來計算的,而不是客戶端。所以如果在調試程序,應該是修改服務器端時間來測試,而不是客戶端。

B.在工程的web.xml中設置,設置方法同上

C.通過Java代碼設置

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

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

退出銷毀session的Action方法

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