一个判断session是否过期的小技巧
前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
Session一直是我們做web項目經常使用的,以前沒太注意,這次又細致的看了下!
?
1.session其實就是一個Map,鍵=值對,通過session.getAttribute("name");獲得session中設置的參數
?
2.session的過期時間是從什么時候開始計算的?是從一登錄就開始計算還是說從停止活動開始計算?
?? 答:從session不活動的時候開始計算,如果session一直活動,session就總不會過期。
???????? 從該Session未被訪問,開始計時; 一旦Session被訪問,計時清0;
?
3.設置session的失效時間
?a)web.xml中
?
Xml代碼???b)在程序中手動設置
??? session.setMaxInactiveInterval(30 * 60);//設置單位為秒,設置為-1永不過期
c)tomcat也可以修改session過期時間,在server.xml中定義context時采用如下定義:
Xml代碼???
4.如何判斷session過沒過期
request.getSeesion(boolean)方法,一下子讓我恍然大悟。這個方法里面傳了一個boolean值,這個值如果是true,那么如果當前的request的session不可用,那么就創建新的會話,如果存在就返回當前的會話。如果參數是false,那么在request的當前會話不存在的時候就返回null。
這樣我們就可以很容易的聯想到這個所謂的request的當前會話是否存在和session過期的聯系,所以我們就可以“近似地”認為session不存在就是session過期了,那么我們就可以很容易地判斷session是否過期了。方法如下:
if(request.getSession(false)==null)
???System.out.println("Session?has?been?invalidated!");
else
???System.out.println("Session?is?active!");
可能大家注意到我上面有一個“近似地”字眼,也就是說存在特別情況。
這個特殊情況就是第一次請求還沒有創建會話的時候,那么用這個方法返回的仍然是null,原因我想大家應該是顯然的。
?
?
[java]?view plain?copy ?print??
?
?
?
比較好的一個辦法
?
[java]?view plain?copy ?print?isNew()是指是否一個新創的session,當用戶訪問一個支持session的jsp網頁時,session被創建,盡管有時session里面并沒有任何東西。
?
?
總結
以上是生活随笔為你收集整理的一个判断session是否过期的小技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何删除虚拟机上的操作系统、删除新建的虚
- 下一篇: 很实用的jQuery事件 - toggl