·
Java中会话session的过期时间配置(容器session有效期),
以及session三种超时设置的优先级说明[Java web]
[Java web] 项目开发中,默认的Session存活时间是30分钟
<session-config> <session-timeout>30</session-timeout> </session-config>
一、Java web开发中,三种会话Session过期时间(Session)设置位置和方法
以下以Tomcat8.5.27为例(其他版本可以参考替换); 为了方便,我们作以下简写。
简写: Tomcat的安装目录简写为{Tomcat_home};
工程目录简写为{MyProject};
A. 在web容器中设置(此处以tomcat为例)
在{Tomcat_home}\conf\web.xml中设置, {Tomcat_home}是bin、conf等目录所在的路径,例如 E:\Apache-TomCat\TomCat8.5.27\
以下是tomcat 8中的默认配置:
<!-- ==================== Default Session Configuration ================= --> <!-- You can set the default session timeout (in minutes) for all newly --> <!-- created sessions by modifying the value below. --> <session-config> <session-timeout>90</session-timeout> </session-config>
</session-config>Tomcat默认session超时时间为30分钟;可以根据需要修改,负数或0为不限制session失效时间。
B. 在工程的web.xml中设置
在{Tomcat_home}\WebApps\{MyProject}\WEB-INF\web.xml中设置, WebApps目录 是docs、examples、、manager、ROOT等目录所在的路径,
例如 E:\Apache-TomCat\TomCat8.5.27\WebApps\[工程名称]\\WEB-INF\web.xml
<!-- 时间单位为分钟 --> <session-config> <session-timeout>180</session-timeout> </session-config>
工程和Web容器一样,默认的session超时时间也是30分钟;可以根据需要修改,负数或0为不限制session失效时间。
C. 通过java代码设置
在Java代码中使用java函数
session.setMaxInactiveInterval(100*60); //以秒为单位
上方设置的有效期是 100分钟 (100* 60s)
特别注意:这里的单位是秒(s) ; 如果设置的值为零或负数,则表示会话将永不超时!
二、这三种设置session有效期方法的优先级
此处优先级按上面的三种方法(A、B、C)来展示,
如果A、B、C三种方法同时使用时的优先级如下:
三种设置session有效期方式的优先级: A < B < C
也就是说,如果同一个工程项目中,如果同时采用了上面的三种方式,则生效的是C :会话超时时间为100分钟 (Java代码中的部分优先生效)
另外,一般情况下,很少有人会直接在Java代码中设置session的过期时间,所以,只需要工程项目的 \WebApps\{MyProject}\WEB-INF\web.xml中设置即可。
(可以直接在War包中做好控制)
···