`

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失效时执行的方法
例子:
public class OnlineUserListener implements HttpSessionListener{
    public void sessionCreated(HttpSessionEvent event){
        HttpSession session=event.getSession;
        String id=session.getId()+session.getCreationTime();
        SummerConstant.UserMap.put(id,Boolean.TRUE);//添加用户
    }
    
    public void sessionDestroyed(HttpSessionEvent event){
        HttpSession session=event.getSession;
        String id=session.getId()+session.getCreationTime();
        synchronized(this){
            SummerConstant.USERNum--;//用户数减-
            SummerConstant.UserMap.remove(id);//从用户组中移除掉,用户组为一个map
        }
    }
}


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

<listener>
<listener-class>com.demo.OnlineUserListener</listener-class>
</listener>
分享到:
评论

相关推荐

    weblogic设置session超时时间

    上面的代码将 Session 超时时间设置为 54 分钟。 需要注意的是,`&lt;session-timeout&gt;` 元素的值以分钟为单位。如果将其设置为 `-2`,则将使用在 `weblogic.xml` 文件中设置的 `TimeoutSecs` 属性值。如果将其设置为 ...

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

    在Java Web应用中,管理用户会话是非常重要的一个环节,其中合理设置session超时(失效)时间是确保应用安全、提高用户体验的关键。本文将详细介绍Java中设置session超时(失效)的三种方法:在web容器中设置、在...

    详解SpringBoot中Session超时原理说明

    如果当前 Session 的超时时间超过了设置的值,那么 Session 就会超时失效。 Session 的超时时间是可以通过配置文件来设置的,并且可以在代码中获取当前 Session 的超时时间。同时,Session 的超时时间也可以通过 ...

    Java设置session超时的几种方式总结

    Java中的session超时是指一个session在一定时间内没有被访问,则会被认定为过期,随后会从服务器中移除,以释放系统资源。在Web开发中,合理设置session超时对于维护应用的安全性和性能都是很重要的。以下,将详细...

    java设置session过期时间的实现方法

    这段代码将当前Session的超时时间设置为20分钟。这种方法只对调用了`setMaxInactiveInterval()`方法的Session生效。如果用户在20分钟后没有发送新的请求,服务器同样会销毁这个Session。 3. **在程序中动态定义...

    session 超时

    session超时是指用户在web系统中进行操作时,如果在一定的时间内没有任何操作,系统会自动认为用户已经离开,这时session(会话)会失效,用户下次进行操作时需要重新登录验证身份才能继续使用。session的设置是为了...

    JSP Session超时设置的实现方法

    设置JSP Session超时时间有三种主要方法: 1. **在web.xml中设置**: 你可以通过在应用程序的`web.xml`部署描述符中添加`&lt;session-config&gt;`元素来指定Session的超时时间。例如: ```xml &lt;session-config&gt; ...

    ext session失效 页面跳转

    当客户端的浏览器关闭或者Session超时时,Session将被视为失效。 当EXT应用检测到Session失效,它需要与后端服务器进行通信,确认Session状态。这通常是通过Ajax请求完成的。如果后端返回的响应表明Session已过期,...

    session失效

    #### Session失效时间概念解析 Session失效是指当一个Session因过期或被主动销毁而无法继续使用的情况。在实际应用中,Session的生命周期可以通过设置最大非活动间隔(Max Inactive Interval)来控制。该参数定义了...

    session过期时间设置

    对于Tomcat这类应用服务器,可以在`conf/web.xml`或`server.xml`中定义Context元素来设置Session超时时间,例如: ```xml &lt;Context ... defaultSessionTimeout="3600"&gt; &lt;!-- 1小时 --&gt; ``` 在Session失效后,...

    session生命周期的设置

    2. **配置文件设置**:在Web应用的`web.xml`配置文件中,可以使用`session-config`元素来全局设置Session的超时时间,如: ```xml &lt;session-config&gt; &lt;session-timeout&gt;30&lt;/session-timeout&gt; &lt;/session-config&gt; ```...

    java中使用session模拟用户登陆

    6. **Session超时**:默认情况下,Session会在一段时间无活动后自动失效,防止用户长时间离开电脑而未登出造成的安全问题。可以通过配置web.xml文件调整Session的超时时间。 7. **Session管理**:在大型应用中,...

    JAVA的SESSION精准统计

    2. **Session过期与清理**:为了防止Session内存泄漏,Web应用服务器通常会设置一个Session的超时时间。超过这个时间,Session应该被清除,对应的计数器也需要减少。这就需要我们在Session监听器中实现逻辑,当...

    java操作Redis缓存设置过期时间的方法

    Java 操作 Redis 缓存设置过期时间的方法 Java 操作 Redis 缓存设置过期时间是指在 Java 应用程序中使用 Redis 缓存时设置缓存项的过期时间,以便自动删除缓存项。下面将详细介绍 Java 操作 Redis 缓存设置过期...

    Java中设置session的详细解释[1].docx

    - Session有一个默认的超时时间,通常在服务器配置中设定,例如30分钟。如果用户在该时间内没有发出任何请求,Session将自动失效。 - 为了优化性能,开发者需要谨慎使用Session,避免存储过多的数据,或者频繁地...

    tomcat6_redis_session_jre7.zip

    这暗示我们,这个压缩包可能包含了一个实现将Tomcat的session数据存储到Redis的解决方案,并且提供了从外部配置文件(context.xml)设置session超时时间的功能,而不是硬编码在web应用的配置文件(web.xml)中。...

    java Session cookie

    开发者需要注意Session超时的管理,避免因长时间未活动导致的无效会话占用服务器资源。同时,对于敏感信息,应尽量避免直接存储在Cookie中,而是通过Cookie的值作为索引,从服务器的Session中获取数据。 **总结** ...

    理解session机制

    可以通过设置合理的Session超时时间、使用Session监听器来监控Session状态,或者使用分布式Session存储(如Redis或Memcached)来解决高并发场景下的Session管理问题。 7. **安全性考虑**: Session ID的安全性至关...

    springboot-shiro

    5. session过期时间设置:在Shiro配置中,可以设置session超时时间,例如`sessionManager.setGlobalSessionTimeout(3600 * 1000);`表示会话超时时间为3600秒。 6. 缓存管理:Shiro支持Redis、Ehcache等多种缓存机制...

Global site tag (gtag.js) - Google Analytics