Java會話超時

REST
Remote
0
08:48 PM · Dec 01 ,2025

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 可通過以下地址訪問:

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.