1. 概述
本教程將演示如何在基於 Servlet 的 Web 應用程序中設置 會話超時。2. 在 web.xml 中配置全局會話超時
所有 Http 會話的超時時間可以在 Web 應用程序的 web.xml 中進行配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app ...>
...
<session-config>
<session-timeout>10</session-timeout>
</session-config>
</web-app>
請注意,超時時間的單位是分鐘,而不是秒。
有趣的一點是,在 Servlet 3.0 環境中,如果可以使用註解而不是 XML 部署描述符,則無法通過編程方式設置全局會話超時。會話超時的編程配置仍然是一個 Servlet Spec JIRA 中的未解決問題,但該問題尚未安排進行處理。
3. 針對每個會話的程序化超時設置
會話超時僅限於當前會話,可以通過jakarta.servlet.http.HttpSession 提供的 API 程序化指定。
HttpSession session = request.getSession();
session.setMaxInactiveInterval(10*60);
與具有分鐘值的 <session-timeout> 元素不同,setMaxInactiveInterval 方法接受的數值為 秒。
4. Tomcat 會話超時設置
所有 Tomcat 服務器都提供一個 web.xml 文件,該文件可以全局配置整個 Web 服務器 – 該文件位於:
$tomcat_home/conf/web.xml
此默認部署描述符確實配置了一個 <session-timeout>,設置為 30 分鐘。
單獨部署的應用,在其自身的 web.xml 描述符中提供其自己的超時值,將優先於並 覆蓋 此全局 web.xml 配置。
請注意,Jetty 也是如此:該文件位於:
$jetty_home/etc/webdefault.xml
5. 結論
本教程討論了在 Servlet Java 應用程序中配置 HTTP Session 超時的實用方法。我們還説明瞭如何在 Tomcat 和 Jetty 等 Web 服務器級別設置此選項。
當項目在本地運行時,主頁 HTML 可通過以下地址訪問: