在系统实施过程中,需要将session会话的超时时间进行客户化设置,否则系统在未操作且超时后,自动切出登录状态。
一般设置为在conf/web.xml中:
- <!-- ==================== 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>30</session-timeout>
- </session-config>
设置完后,前台测试后发现不好用,怀疑有设置的级别大于在conf/web.xml设置;
查阅资料后,发现:
Tomcat的会话超时可以在多个级别上设置:tomcat实例级别、Web应用级别、servlet级别以及运行时Context代码级别。 较低级别的设定会覆盖较高级别的设定。
第一个地方如上,且为web容器级别;
第二个为webapp级别,在webapp中的 WEB-INF/web.xml
- <!-- 配置Session失效时间 -->
- <session-config>
- <session-timeout>30</session-timeout>
- </session-config>
也是以min为单位;
第三个为应用程序代码中:硬编码
- session.setMaxInactiveInterval(30*60);//以秒为单位
优先级,越细粒度优先级越高,也就是3>2>1
第四个还要一种配置,但现在比较少见了,因为需要将Context配置在server.xml里:
这就是修改conf/server.xml
- <Context path="/test" docBase="/home/httpd/html/test"
- defaultSessionTimeOut="3600" isWARExpanded="true"
- isWARValidated="false" isInvokerEnabled="true"
- isWorkDirPersistent="false"/>
单位为秒。
以上!