【学习笔记】【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

猜你喜欢

转载自www.cnblogs.com/Twobox/p/10361712.html