在默認情況下,session對象在關閉瀏覽器后並不是立刻被銷毀,因此,為了考慮系統的安全性,在用戶退出時,需要即刻清除session對象,防止他人盜用session對象中的信息。
清除session對象內容的主要方法如下:
(1)、removeAttribute()方法。該方法是用來刪除session對象中保存的指定屬性信息。
例如:session.setAttribute("name", "iverson");session.removeAttribute("name");
(2)、invalidate()方法。該方法可以清除session對象中的所有信息。
例如:session.invalidate().
通常情況下,關閉瀏覽器后,session信息需要等到session對象失效后才能清除,如果需要實現關閉瀏覽器后即可清除session信息,請嘗試用以下方法。
<body οnbefοreunlοad="window.location='logout.jsp'">
logout.jsp頁面中,可以這么做:<% HttpSession session = request.getSession(); session.invalidate(); %>
--------------------------------------------------------------------------------------------------------------
設置session失效時間的3種方法
session-timeout(web.xml)元素與session.setMaxInactiveInterval()函數
a) web app server中,如websphere里可以設置超時時間為30分鍾
b)在web.xml中的session-config配置
session-timeout元素(WEB.XML文件中的元素)用來指定默認的會話超時時間間隔,以分鍾為單位。該元素值必須為整數。如果 session-timeout元素的值為零或負數,則表示會話將永遠不會超時。如:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
//30分鍾
setMaxInactiveInterval設置的是當前會話的失效時間,不是整個web的時間,單位為以秒計算。如果設置的值為零或負數,則表示會話將永遠不會超時。常用於設置當前會話時間。
c) 在程序中手動設置
java 代碼
session.setMaxInactiveInterval(30 * 60);
想問兩個問題:
一、它們的優先級?我想C應該最優先,但a和b 呢
二、如果一個應用的多個地方設置了不同的interval,會對session有影響嗎?
如后台管理用戶登錄設置超時時間為30分鍾,前台用戶登錄設置超時時間為15分鍾。
此時的setMaxInactiveInterval是只影響servlet容器session的實例?還是影響整個容器(如果是這個,就有問題了)
--------------------------------------------------------------------------------------------------------------
附上一條,單存js控制
<script type="text/javascript"> window.οnbefοreunlοad=onclose; function onclose() { if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey) { //alert(); sessionStorage.clear(); } } </script>
摘自:
https://blog.csdn.net/chuxuan0215/article/details/72842646
可參考:
https://blog.csdn.net/chs_jdmdr/article/details/7363446
https://blog.csdn.net/qq_38799885/article/details/82705835