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