接續上文,本文深入剖析 session 與 application 兩大跨請求作用域,它們支撐用戶會話狀態維持與全局應用級數據共享,是 Web 應用狀態管理的核心基礎設施。

getSession() 創建 → 瀏覽器關閉 / 超時失效(默認 30 分鐘) / 手動 invalidate()。<!-- Session_01.jsp -->
<% session.setAttribute("name", "趙玉強"); %>
<a href="session_02.jsp">通過鏈接訪問</a>
<!-- Session_02.jsp -->
<% String username = (String)session.getAttribute("name"); %>
姓名:${sessionScope.name}
瀏覽器關閉前,無論跳轉多少頁、經過多久,session 域數據均可獲取;而 request 域在頁面跳轉瞬間即失效。
| 需求 | 推薦作用域 | 理由 |
|---|---|---|
| 頁面內臨時變量 | page | 最小範圍,自動清理 |
| Controller→View 傳遞數據 | request | 配合 forward,請求結束自動釋放 |
| 用戶登錄狀態、個性化數據 | session | 用戶級隔離,會話級生命周期 |
| 全局配置、緩存、統計計數 | application | 應用級單例,全用戶可見 |