在系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session。
具体设置很简单,方法有三种:

  1. 在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。
  2. 也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置                                                                                                                          
    <!-- 设置session失效,单位分 --><session-config><session-timeout>1</session-timeout></session-config>

  3. 直接在应用服务器中设置,如果是tomcat,可以在tomcat目录下conf/web.xml中找到<session-config>元素,tomcat默认设置是30分钟,只要修改这个值就可以了。

需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:(1)>(2)>(3)

在一般系统中,也可能需要在session失效后做一些操作,
(1)控制用户数,当session失效后,系统的用户数减少一个等,控制用户数在一定范围内,确保系统的性能。
(2)控制一个用户多次登录,当session有效时,如果相同用户登录,就提示已经登录了,当session失效后,就可以不用提示,直接登录了。
 那么如何在session失效后,进行一系列的操作呢?
这里就需要用到监听器了,即当session因为各种原因失效后,监听器就可以监听到,然后执行监听器中定义好的程序就可以了。
监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法 
自己可以继承这个类,然后分别实现。
sessionCreated指在session创建时执行的方法
sessionDestroyed指在session失效时执行的方法
给一个简单的例子:

public class SessionListener implements HttpSessionListener{      public void sessionCreated(HttpSessionEvent event) {      HttpSession ses = event.getSession();      String id=ses.getId()+ses.getCreationTime();      SummerConstant.UserMap.put(id, Boolean.TRUE);     //添加用户
}      public void sessionDestroyed(HttpSessionEvent event) {      HttpSession ses = event.getSession();      String id=ses.getId()+ses.getCreationTime();      synchronized (this) {      SummerConstant.USERNUM--;   //用户数减一      SummerConstant.UserMap.remove(id); //从用户组中移除掉,用户组为一个map
              }      }
}   

然后只需要把这个监听器在web.xml中声明就可以了

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

转载于:https://www.cnblogs.com/lr393993507/p/5231474.html

设置session失效的几种方法相关推荐

  1. 【转】介绍设置Session失效的几种方法

    转载地址:http://developer.51cto.com/art/201106/269493.htm Session对象是HttpSessionState的一个实例.该类为当前用户会话提供信息, ...

  2. web集群时session同步的3种方法

    web集群时session同步的3种方法 在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话 ...

  3. win10定时关机c语言,Win10系统怎么定时关机?Windows10设置定时关机的两种方法

    最近,有位刚刚升级win10系统的用户反映自己在使用完电脑后经常会忘记手动关机,因此为了能够更好地保护电脑,希望在新系统中设置定时关机.这该如何操作呢?接下来,小编就向大家分享Windows10设置定 ...

  4. 设置环境变量的三种方法【转载】

    文章目录 1 设置环境变量的三种方法 1.1 临时设置 1.2 当前用户的全局设置 1.3 所有用户的全局设置 2 测试当前环境变量 3 脚本解析 3.1 打开的文件如下: 3.2 脚本解析说明 3. ...

  5. android设置自动开关机,Android开发之设置开机自动启动的几种方法

    Android开发之设置开机自动启动的几种方法 方法一: android:name=".AutoStartReceiver"为处理开机启动后所做操作的AutoStartReceiv ...

  6. 计算机被填充背景花束纹理在那,为艺术字设置纹理填充的两种方法

    Word2007系统中的纹理效果同样可以应用于艺术字的填充.文字表面添加纹理填充使文字看起来富于质感和立体感,word文档自带的已经有很多可供选择的漂亮纹理,用户在使用中根据其展示效果选择需要的纹理填 ...

  7. vue修改http请求头_vue-resouce设置请求头的三种方法

    本文主要介绍了vue-resouce设置请求头的三种方法,分享给大家,具体如下: 第一种:在Vue实例中设置 var vm = new Vue({ el:'#rrapp', data:{ showLi ...

  8. win10定时关机c语言,win10定时关机在哪?win10设置定时关机的三种方法

    win10定时关机在哪?很多win10用户可能还不会设置定时关机,下面脚本之家小编就给大家带来win10设置定时关机的三种方法,一起来看看吧! 方法一:Win10定时关机命令:shutdown –s ...

  9. chrome设置黑暗模式的4种方法

    chrome设置黑暗模式的4种方法 方式一:自带皮肤暗黑 单纯设置chrome皮肤为黑暗模式,内容区域不会变黑,功能是chrome自带的,也十分容易设置. 桌面找到google chrome图标右键- ...

最新文章

  1. Exchange 2010 OAB下载问题排错error 0x80200049
  2. python3.7.2教程-centos7系统下python2与python3共存
  3. 计算机索引无法使用情况,电脑上出现索引,电脑卡的什么都打不开
  4. 数据从业者必读:抓取了一千亿个网页后我才明白,爬虫一点都不简单
  5. Struts2学习笔记04 之 拦截器
  6. Docker笔记四 发布自制DockerImage 到 Dockerhub
  7. 多线程常见问题(面试)
  8. XCTest+XCTool
  9. 为什么Audition CC2017扫描不了电音插件,你需要这个工具
  10. 深入学习IOZone【转】
  11. Android 仿淘宝首页界面
  12. vue利用 canvas 在图片上加文字
  13. 服务器被黑客攻击和被挖矿之后的SSH安全防御 | SSH security defense after server is hacked and mined
  14. 线上引流推广渠道有哪些,哪个效果好,企业应该怎么做?
  15. 程序员之间的战争,某宁测试和开发干架,鼠标线勒脖子都来了!
  16. 云适配陈本峰谈前端:移动端浏览器很快就会赶上PC浏览器
  17. Ubuntu系统怎么进入grub界面
  18. 第一个SOFARPC工程
  19. Java学习踩坑:Elasticsearch7.X.X的JDK版本导致的问题
  20. 离散序列的相似性度量

热门文章

  1. MySQL单表恢复方法
  2. 软件测试2019:第二次作业
  3. jquery-$()函数的用法及一些常用的选择器
  4. 分享一个TP5实现Create()方法的心得
  5. iOS 设置所有UIButton的ExclusiveTouch属性为YES
  6. public void DeleteT(ListT EntityList) where T : class, new() 这是什么意思
  7. 基本概念之dos和cmd的区别
  8. 【程序员跳槽】学弟被高薪挖走不到一年就后悔的无奈经历,到底是老板的水深?还是学弟太年轻?
  9. 安卓高手之路之图形系统(6)requestLayout的流程
  10. android开发过程中项目中遇到的坑----布点问题