Java設置session超時(失效)的時間

版權屬于原作者:蝶舞飛仙


在一般系統(tǒng)登錄后,都會設置一個當前session失效的時間,以確保在用戶長時間不與服務器交互,自動退出登錄,銷毀session

具體設置的方法有三種:

1.在web容器中設置(以tomcat為例)

在tomcat-9.0\conf\web.xml中設置,以下是tomcat9.0中默認配置:

<session-config>

<session-timeout>30</session-timeout>

</session-config>

tomcat默認session超時時間為30分鐘,可以根據(jù)需要修改,負數(shù)或0為不限制session失效時間

這里要注意這個session設置的時間是根據(jù)服務器來計算的,而不是客戶端。所以如果在調(diào)試程序,應該是修改服務器端時間來測試,而不是客戶端

2.在工程的web.xml中設置

單位為分鐘,這里指30分鐘后失效

<session-config>

<session-timeout>30</session-timeout>

</session-config>

3.通過java代碼設置

session.setMaxInactiveInterval(30*60);//以秒為單位,即在沒有活動30分鐘后,session將失效



三種方式優(yōu)先等級:1 < 2 < 3

在一般系統(tǒng)中,也可能需要在session失效后做一些操作:

1.控制用戶數(shù),當session失效后,系統(tǒng)的用戶數(shù)減少一個,控制用戶數(shù)量在一定范圍內(nèi),確保系統(tǒng)的性能

2.控制一個用戶多次登錄,當session有效時,如果相同用戶登錄,就提示已經(jīng)登錄了,當session失效后,就可以不同提示,直接登錄

那么如何在session失效后,進行一系列的操作呢?

這里就需要用到監(jiān)聽器了,即當session因為各種原因失效后,監(jiān)聽器就可以監(jiān)聽到,然后執(zhí)行監(jiān)聽器中定義好的程序就可以了

監(jiān)聽器類為:HttpSessionListener類,有sessionCreated和sessionDestroyed兩個方法

自己可以繼承這個類,然后分別實現(xiàn)

sessionCreated指在session創(chuàng)建時執(zhí)行的方法

sessionDestroyed指在session失效時執(zhí)行的方法

例如

public class OnlineUserListener implements HttpSessionListener{

????public void sessionCreated(HttpSessionEvent event){

????????HttpSession session=event.getSession;

????????String id=session.getId()+session.getCreationTime();

????????SummerConstant.UserMap.put(id,Boolean.TRUE);

????????//添加用戶

????}

????public void sessionDestroyed(HttpSessionEvent event){

????????HttpSession session=event.getSession;

????? ? String id=session.getId()+session.getCreationTime();

? ? ????synchronized(this){

????????????SummerConstant.USERNum--;//用戶數(shù)減-

????????????SummerConstant.UserMap.remove(id);//從用戶組中移除掉,用戶組為一個map

????????}

????}

}

然后只需要把這個監(jiān)聽器在web.xml中聲明就可以了

<listener>

<listener-class> com.demo.OnlineUserListener </listener-class>

</listener>

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 目錄Cookie機制什么是CookieCookie的不可跨域名性Unicode編碼:保存中文BASE64編碼:保存...
    Tomatoro閱讀 17,042評論 7 186
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 本文包括:1、Listener簡介2、Servlet監(jiān)聽器3、監(jiān)聽三個域?qū)ο髣?chuàng)建和銷毀的事件監(jiān)聽器4、監(jiān)聽三個域?qū)?..
    廖少少閱讀 6,649評論 6 28
  • 今晚,翻支付寶看到里面有個收貨地址:深圳市蛇口人民醫(yī)院~科~~,這些似乎是2014事情,還好你一切都好,對不起!
    靜默等你閱讀 161評論 0 0
  • 工作這么多我該怎么辦?現(xiàn)在好迷茫,不知何去何從?我想開始寫作、讀書,但又怕堅持不下來怎么辦?……很多人都會遇到...
    兩條腿走路的喵閱讀 452評論 0 0

友情鏈接更多精彩內(nèi)容