首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 一般處理程序 Session 失效:生命週期與配置檢查

     編輯:程式設計疑難解答

現象

登錄成功存 `session["name"]`,賦值給對象能看到值,但下次使用變 `null`。

常見原因

  1. Session 過期:默認 30 分鐘無活動過期。檢查 `web.xml` ``。
  2. Session ID 丟失:客戶端禁用 Cookie 且未啟用 URL 重寫 (`response.encodeURL`)。
  3. 多次獲取 Session:`request.getSession(true)` 每次調用可能創建新 Session,應用 `request.getSession(false)` 獲取現有。
  4. 集群/負載均衡:Session 未同步 (需 Sticky Session 或 Redis 共享)。

正確用法


// 登錄時
HttpSession session = request.getSession();
session.setAttribute("name", userName); // 存對象而非字符串更佳

// 後續使用
HttpSession session = request.getSession(false); // 不創建新
if (session != null) {
    String name = (String) session.getAttribute("name");
}

配置建議

  • 生產環境配置 Redis/JDBC Session 持久化。
  • 設置合理超時時間 (如 2 小時)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved