概述
本教程将介绍如何在基于Servlet的Web应用程序中设置会话(session)的超时时间。
web.xml中的会话超时配置
尽管现在spring boot非常流行,但仍然有相当多的应用使用传统方式部署和运行——独立的Tomcat服务器。在Tomcat中,你可以给你的应用配置一个全局的会话超时时间:
<?xml version="1.0" encoding="UTF-8"?>
<web-app ...>
...
<session-config>
<session-timeout>10</session-timeout>
</session-config>
</web-app>
请注意,这里超时时间以分钟为单位,而不是秒。
一个有趣的事情是,在Servlet3.0之后,我们可以脱离web.xml,直接使用注解来配置一个项目,在这种情况下,我们无法使用注解来配置全局的会话超时时间,必须使用XML的方式才可以。
Servlet代码中手动指定超时时间
我们可以通过javax.servlet.http.HttpSession的API以编程方式指定当前会话的超时:
HttpSession session = request.getSession();
session.setMaxInactiveInterval(10*60);
与上面web.xml不同的是,此处超时时间的单位是秒
Tomcat的web.xml
所有Tomcat服务器都提供一个默认的web.xml文件,可以为整个Web服务器全局配置 - 该文件位于:
$tomcat_home/conf/web.xml
这个默认配置将<session-timeout>
配置为值为30分钟。
单个部署的应用程序,在其自己的web.xml文件中提供自己的超时值将优先于并覆盖此全局web.xml配置。
请注意,Jetty也是如此:文件位于:
$jetty_home/etc/webdefault.xml
结论
本教程讨论了如何在Servlet Java应用程序中配置HTTP会话超时的实际方面。我们还说明了如何在Tomcat和Jetty中在Web服务器级别设置它。
文章评论