设置session失效的几种方法
在系统登录后,都会设置一个当前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失效时执行的方法
给一个简单的例子:
01.public class SessionListener implements HttpSessionListener{
02.
03. public void sessionCreated(HttpSessionEvent event) {
04. HttpSession ses = event.getSession();
05. String id=ses.getId()+ses.getCreationTime();
06. SummerConstant.UserMap.put(id, Boolean.TRUE); //添加用户
07.}
08.
09. public void sessionDestroyed(HttpSessionEvent event) {
10. HttpSession ses = event.getSession();
11. String id=ses.getId()+ses.getCreationTime();
12. synchronized (this) {
13. SummerConstant.USERNUM--; //用户数减一
14. SummerConstant.UserMap.remove(id); //从用户组中移除掉,用户组为一个map
15. }
16. }
17.}
然后只需要把这个监听器在web.xml中声明就可以了
<listener>
<listener-class>
com.demo.SessionListener
</listener-class>
</listener>
分享到:
相关推荐
经了解,他对同一个项目使用tomcat部署了两个环境,一个在开发服务器上,一个在他本机,两个环境代码配置完全相同。两边通过同一个nginx进行反向代理,nginx配置大致如下, location /health/ { proxy_pass ...
weblogic 如何设置session的超时时间
配置会话过期跳转过期页面,web.xml 配置过滤文件,及过滤文件方法的编写有详细注释
页面session页面点击会报错,我可以配置拦截器进行拦截操作判断session是否过期。
1、配置web.config <sessionState mode=StateServer stateConnectionString=tcpip sqlConnectionString=data source=127.0.0.1;Trusted_Connection cookieless=false timeout=40/> 2、在Global.asax中添加启动...
shiro 新手鼓捣了一天终于搞好了。。还差个分布式session. MMP改天出个文档写清楚各个配置都是干啥的,还有之间的关系。
tomcat7+redis完成session共享jar及配置
session的过期时间需要配置在tomcat 中的 web.xml 中,时间以分钟计算。另最大时间好像是24小时,就是说,你的session过期时间可以设置成1440,如果设置成1441是无效的。(还没有测试) 代码如下: <session> <session>...
tomca8/conf/context.xml 添加如下配置: host="192.168.24.131" ---redis服务器ip ... port="6379" database="0" ---redis数据库,共有16个,默认使用0 maxInactiveInterval="60" /> ---session的失效时间
Spring下配置几种常用连接池。
网上很多人给出了解答:修改配置文件中的session.gc_maxlifetime。如果想了解更多session回收机制,继续阅读。(本文环境php5.2) 概述:每一次php请求,会有1/100的概率(默认值)触发“session回收”。如果...
tomcat中配置redis失效时间,修改了原来读取web.xml值 改为从context.xml中读取保存时间
但在工作项目中碰到了 但原因在这里记录下:web应用会存在一个session 而uploadify上传时也会产生一个新的session 导致在后台判断session是否失效时获取的session为null 于是就有了请求路径后面的配置; 2 清空队列...
如果“session回收”发生,那就会检查/tmp/sess_*的文件,如果最后的修改时间到现在超过了1440秒(gc_maxlifetime的值),就将其删除,意味着这些session过期失效。 1. session在server端(一般是Apache with ...
kaptcha-0.0.9.jar用于实现web开发,配置验证码样式显示格式以及保存生成code码于session域中(设定session失效时间)
Web应用中的变量存放在不同的jsp对象中,会有不一样的作用域,四种不同的作用域排序是 pageContext < request < session < application; 1、pageContext:页面域,仅当前页面有效,离开页面后,不论重定向...
redis-session-tomcat-filter ...如果配置了redis_cluster.host,则redis.pool.host的配置自动失效 对jedis做了简单修改,需要把pom文件中关于jedis的依赖注释调 直接引用lib中的jedis-3.0.0-SNAPSHOT.jar
n326 配置Session状态存储 n327 配置SQL Server Session状态 n33 使用用户配置文件 n331 创建用户配置文件组 n332 支持匿名用户 n333 合并匿名用户配置文件 n334 从自定义类继承Profile n335 创建复杂Profile属性 ...
目前官方已经开放了 ThinkPHP5.1版本的swoole: ... 但是还有一些不完善的地方: ...5.配置失效问题,每次请求完成后,重新初始化配置:https://github.com/top-think/think-swoole/issues/38 我们现在对这些问题改造一下
* 1.框架SpringBoot+MyBatis,相比于SSM版的项目大大减少了xml配置,仅在application.yml文件中配置了少量信息 * 2.... * 分布式session共享避免了集群环境下用户登录信息失效的问题 * 5.测试页面优化