Java设置session超时(失效)的时间

在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session
具体设置的方法有三种:
1.在web容器中设置(以tomcat为例)
在tomcat-7.0\conf\web.xml中设置,以下是tomcat7.0中默认配置:

<session-config>
<session-timeout>30</session-timeout>
</session-config>

tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制session失效时间

这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果在调试程序,应该是修改服务器端时间来测试,而不是客户端

2.在工程的web.xml中设置
<!--时间单位为分钟-->

<session-config>
<session-timeout>15</session-timeout>
</session-config>

 这里的15是指15分钟失效

3.通过java代码设置
session.setMaxInactiveInterval(30*60);//以秒为单位,即在没有活动30分钟后,session将失效

三种方式优先等级:1 < 2 < 3

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

 1 public class OnlineUserListener implements HttpSessionListener{
 2     public void sessionCreated(HttpSessionEvent event){
 3         HttpSession session=event.getSession;
 4         String id=session.getId()+session.getCreationTime();
 5         SummerConstant.UserMap.put(id,Boolean.TRUE);//添加用户
 6     }
 7
 8     public void sessionDestroyed(HttpSessionEvent event){
 9         HttpSession session=event.getSession;
10         String id=session.getId()+session.getCreationTime();
11         synchronized(this){
12             SummerConstant.USERNum--;//用户数减-
13             SummerConstant.UserMap.remove(id);//从用户组中移除掉,用户组为一个map
14         }
15     }
16 }

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

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

时间: 2024-10-09 17:10:42

Java设置session超时(失效)的时间的相关文章

Java设置session超时(失效)的三种方式

1.      在web容器中设置(此处以tomcat为例) 在E:\apache-tomcat-7.0.54\apache-tomcat-7.0.54\conf\web.xml中设置,以下是apache-tomcat-7.0.54中的默认配置 <!-- ==================== Default Session Configuration ================= --> <!-- You can set the default session timeout 

Java-No.05 Java设置session超时(失效)的三种方式

1.在web容器中设置(此处以tomcat为例) 在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: <!-- ==================== Default Session Configuration ================= -->   <!-- You can set the default session timeout (in minutes) for all newly   -->   <!-

Java设置session超时(失效)的三种方式 设置session的有效时间

1.      在web容器中设置(此处以tomcat为例) 在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: [html] view plain copy <!-- ==================== Default Session Configuration ================= --> <!-- You can set the default session timeout (in minutes) for 

Shiro 设置session超时时间

通过api:Shiro的Session接口有一个setTimeout()方法 //登录后,可以用如下方式取得session SecurityUtils.getSubject().getSession().setTimeout(30000); 查看Shiro的api文档, setTimeout void setTimeout(long maxIdleTimeInMillis) throws InvalidSessionExceptionSets the time in milliseconds t

Javaweb设置session过期时间

在Java Web开发中,Session为我们提供了很多方便,Session是由浏览器和服务器之间维护的.Session超时理解为:浏览器和服务器之间创建了一个Session,由于客户端长时间(休眠时间)没有与服务器交互,服务器将此Session销毁,客户端再一次与服务器交互时之前的Session就不存在了. 设置Session超时时间方式 方式一:在web.xml中设置session-config 如下: <session-config> <session-timeout>2&l

c# webConfig中的session超时详细设置

webConfig中的session超时详细设置 我们在webConfig中设置Session超时的时候,如果最后发行的地址是远程服务器,我们很多不是必须的属性并不用设置,如果设之后,倒不能让 session超时奏效.我在做现在的程序的时候,就是这样,写sessionState的时候,按照如下的方式设置之后,session设置的 timeout时间不能够起作用:但是不用了一些属性之后,就能够起作用了. 服务器上发行后不能起作用的设置: <sessionState mode="InProc&

Java设置Client Socket链接Server超时时间

Java设置Client Socket链接Server超时时间 学习了:http://blog.csdn.net/tterminator/article/details/52494141 http://blog.csdn.net/fw0124/article/details/41227543 整理如下: Socket client = null; // 创建一个流套接字,连接到指定主机上的指定端口号 // client = new Socket(IP, PORT); client = new S

session超时设置

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

asp.net web.config 设置Session过期时间

在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分钟后如果当前用户没有操作,那么Session就会自动过期. 二.网站级 IIS-网站-具体网站(如DemoSite)-属性-Asp.net,此时有两个选项,一个是“编辑全局配置”,一个是“编辑配置