设置session失效的几种方法
在系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session。
具体设置很简单,方法有三种:
- 在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端。
- 也是比较通用的设置session失效时间的方法,就是在项目的web.xml中设置
<!-- 设置session失效,单位分 --><session-config><session-timeout>1</session-timeout></session-config>
- 直接在应用服务器中设置,如果是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失效的几种方法相关推荐
- 【转】介绍设置Session失效的几种方法
转载地址:http://developer.51cto.com/art/201106/269493.htm Session对象是HttpSessionState的一个实例.该类为当前用户会话提供信息, ...
- web集群时session同步的3种方法
web集群时session同步的3种方法 在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话 ...
- win10定时关机c语言,Win10系统怎么定时关机?Windows10设置定时关机的两种方法
最近,有位刚刚升级win10系统的用户反映自己在使用完电脑后经常会忘记手动关机,因此为了能够更好地保护电脑,希望在新系统中设置定时关机.这该如何操作呢?接下来,小编就向大家分享Windows10设置定 ...
- 设置环境变量的三种方法【转载】
文章目录 1 设置环境变量的三种方法 1.1 临时设置 1.2 当前用户的全局设置 1.3 所有用户的全局设置 2 测试当前环境变量 3 脚本解析 3.1 打开的文件如下: 3.2 脚本解析说明 3. ...
- android设置自动开关机,Android开发之设置开机自动启动的几种方法
Android开发之设置开机自动启动的几种方法 方法一: android:name=".AutoStartReceiver"为处理开机启动后所做操作的AutoStartReceiv ...
- 计算机被填充背景花束纹理在那,为艺术字设置纹理填充的两种方法
Word2007系统中的纹理效果同样可以应用于艺术字的填充.文字表面添加纹理填充使文字看起来富于质感和立体感,word文档自带的已经有很多可供选择的漂亮纹理,用户在使用中根据其展示效果选择需要的纹理填 ...
- vue修改http请求头_vue-resouce设置请求头的三种方法
本文主要介绍了vue-resouce设置请求头的三种方法,分享给大家,具体如下: 第一种:在Vue实例中设置 var vm = new Vue({ el:'#rrapp', data:{ showLi ...
- win10定时关机c语言,win10定时关机在哪?win10设置定时关机的三种方法
win10定时关机在哪?很多win10用户可能还不会设置定时关机,下面脚本之家小编就给大家带来win10设置定时关机的三种方法,一起来看看吧! 方法一:Win10定时关机命令:shutdown –s ...
- chrome设置黑暗模式的4种方法
chrome设置黑暗模式的4种方法 方式一:自带皮肤暗黑 单纯设置chrome皮肤为黑暗模式,内容区域不会变黑,功能是chrome自带的,也十分容易设置. 桌面找到google chrome图标右键- ...
最新文章
- Exchange 2010 OAB下载问题排错error 0x80200049
- python3.7.2教程-centos7系统下python2与python3共存
- 计算机索引无法使用情况,电脑上出现索引,电脑卡的什么都打不开
- 数据从业者必读:抓取了一千亿个网页后我才明白,爬虫一点都不简单
- Struts2学习笔记04 之 拦截器
- Docker笔记四 发布自制DockerImage 到 Dockerhub
- 多线程常见问题(面试)
- XCTest+XCTool
- 为什么Audition CC2017扫描不了电音插件,你需要这个工具
- 深入学习IOZone【转】
- Android 仿淘宝首页界面
- vue利用 canvas 在图片上加文字
- 服务器被黑客攻击和被挖矿之后的SSH安全防御 | SSH security defense after server is hacked and mined
- 线上引流推广渠道有哪些,哪个效果好,企业应该怎么做?
- 程序员之间的战争,某宁测试和开发干架,鼠标线勒脖子都来了!
- 云适配陈本峰谈前端:移动端浏览器很快就会赶上PC浏览器
- Ubuntu系统怎么进入grub界面
- 第一个SOFARPC工程
- Java学习踩坑:Elasticsearch7.X.X的JDK版本导致的问题
- 离散序列的相似性度量
热门文章
- MySQL单表恢复方法
- 软件测试2019:第二次作业
- jquery-$()函数的用法及一些常用的选择器
- 分享一个TP5实现Create()方法的心得
- iOS 设置所有UIButton的ExclusiveTouch属性为YES
- public void DeleteT(ListT EntityList) where T : class, new() 这是什么意思
- 基本概念之dos和cmd的区别
- 【程序员跳槽】学弟被高薪挖走不到一年就后悔的无奈经历,到底是老板的水深?还是学弟太年轻?
- 安卓高手之路之图形系统(6)requestLayout的流程
- android开发过程中项目中遇到的坑----布点问题