java session时长问题,java设置session超时时间实例

KLQ 2020-06-19 09:44:34 java常见问答 8960

java session超时设置你知道应该如何设置吗?下面要给大家带来的实例就是和java设置session超时时间相关的内容,一起来看看具体实现方式吧。

一般的系统登陆了之后,都会有设置一个当前的session失效(超时)时间,这样主要是为了确保,在用户长时间不和服务器交互,自动退出登录,销毁session。

那么具体的来讲的话一共有3种方法,一起来看看吧。

首先是第一种方法:在web容器中设置

我们这里以tomcat为例子。

在tomcat-7.0confweb.xml当中设置,下面的是tomcat7.0当中默认配置。

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

tomcat默认的是session超时时间为30分钟,能够依据需要修改,负数或者是0不限制session失效时间。

注意,这个session设置的时间是依据服务器来计算的,不是依据客户端,所以说,在调序程序的时候,要修改服务器端时间来测试,不是去修改客户端。

第二种方法就是:在工程的web.xml当中设置

下面的15所指的是15分钟失效。

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

第三种方法就是java代码设置

session.setMaxInactiveInterval(30*60);//以秒为单位,也就是,在没有活动30分钟之后,session失效。

以上3种方式优先等级-1 < 2 < 3。

延伸阅读:

在很多的系统当中,会要在session失效之后做一些操作,那么问题来了,在session失效之后,怎样来进行操作呢?

用监听器。

监听器类为HttpSessionListener类,有sessionCreated和sessionDestroyed2方法。

自己可以继承这个类,之后分别实现。

例:

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当中声明就成了。

java session时长问题远远不止这些,但是java设置session超时时间的内容就给大家介绍到这里了,更多相关问题,请来奇Q工具网的常见问题栏目了解吧。

推荐阅读:

分布式session的几种实现方式详解及总结

session共享如何实现?实现的方法都有哪些?

session用法是什么?原理是什么?