知識庫 / REST RSS 訂閱

Java 會話超時

REST
HongKong
4
04:11 AM · Dec 06 ,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);

<em>&lt;session-timeout&gt;</em 元素相比,<em>setMaxInactiveInterval</em 方法接受的值是

4. Tomcat 會話超時

所有 Tomcat 服務器都提供一個默認的 <a title="Default Servlet Configuration for Tomcat 7" href="http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html" target="_blank" rel="noopener noreferrer">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.