1. 程式人生 > 實用技巧 >實現關閉瀏覽器時清除session的方法

實現關閉瀏覽器時清除session的方法

在預設情況下,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