一個判斷session是否到期的小技巧

來源:互聯網
上載者:User
session|技巧

前一段時間有好幾個問題,提到怎麼判斷session是否到期。
接觸jspo已經很久了,但是還真沒有想過這個問題,當時也就沒有找到一個滿意的答案給人家。
當時,我提到一個方法,就是實現HttpSessionListener介面,然後在sessionDestroyed()方法中執行一些操作,表示session要到期了,因為這個方法是session.invalidate()之前監聽器調用的方法。這個判斷的方法顯然不能讓人滿意。
我當時問了些人,但是也沒有得到一個準確的答案。
正好偶然間看到,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,原因我想大家應該是顯然的。

以上是個人拙見,希望大家指正。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。