【學習筆記】【Javaweb】二、Session對象過期時間三種設置方法、Session失效監聽器


一、前言

  本文:https://www.cnblogs.com/Twobox/p/10361712.html

  參考:https://www.cnblogs.com/diewufeixian/p/4221747.html

  自己設計SSO系統的時候,需要考慮多個客戶網站與中心網站的Session有效期同步問題。

  即需要滿足:

    客戶端網站Session剩余失效時間必須短於中心網站。

    中心網站Session失效的時候,客戶端網站必須全部聲明失效。

  場景:

    用戶第一次在中心網站登陸的時候會創建並刷新 中心網站 的Session過期時間。但隨后就去訪問子網站,后面可能就不會再訪問中心網站。

    故:用戶訪問某子網站時,子網站通知中心網站刷新Session過期時間。

    

    子網站畢竟是別人的網站,中心網站無法保證子網站會及時通知自己刷新Session過期時間。所以也可能存在某子網站Session待過期時間長於中心網站。

    故:為了安全保證並瞞住上面兩個要求。監聽器監聽中心網站某Session失效后,隨后通知相關子網站強制聲明Session失效。

二、開始

  按照優先級,從小到大介紹:

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

    

    tomcat/conf/web.xml 下 12%左右的位置。

    

    單位為分鍾!!!

    tomcat默認session超時時間為30分鍾,負數或0為不限制session失效時間。

   ② 在程的web.xml中設置

    

    單位為分鍾!!!

    ③ 過java代碼設置

    session.setMaxInactiveInterval(30*60);

    單位為 秒!!!!!!

    即在沒有活動30分鍾后,此session將失效。

  三種方式優先等級:1 < 2 < 3

三、session監聽器

  當session因為各種原因失效后,監聽器就可以監聽到,然后執行監聽器中定義好的程序就可以了。

  監聽器類為:HttpSessionListener類,有sessionCreated和sessionDestroyed兩個方法
  自己可以繼承這個類,然后分別實現
  sessionCreated指在session創建時執行的方法
  sessionDestroyed指在session失效時執行的方法
  例子:

 1 public class OnlineUserListener implements HttpSessionListener{
 2     public void sessionCreated(HttpSessionEvent event){
 3         // session創建后
 4         HttpSession session=event.getSession;
 5         // 有了 session后,巴拉巴拉巴拉一頓操作。
 6     }
 7     
 8     public void sessionDestroyed(HttpSessionEvent event){
 9         // session 立馬銷毀前
10         HttpSession session=event.getSession;
11         // 有了 session后,巴拉巴拉巴拉一頓操作。
12         }
13     }
14 }

四、后言

   然后就可以胡作非為了。

  2019-02-11 14:14:48


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM