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

JSP 四大作用域對象詳解(二):session 與 application 跨請求共享機制

     編輯:關於JSP

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

3. session 域(HttpSession)

session 域範圍示意圖

  • 範圍:同一用戶瀏覽器會話內的所有請求(同一 JSESSIONID)。
  • 生命周期:首次調用 getSession() 創建 → 瀏覽器關閉 / 超時失效(默認 30 分鐘) / 手動 invalidate()。
  • 核心機制:依賴 Cookie(JSESSIONID)關聯客戶端與服務端會話。
  • 典型場景:用戶登錄狀態、購物車、權限信息、多步驟表單數據暫存。

實戰對比:request vs session 跨頁面傳值

<!-- 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 域在頁面跳轉瞬間即失效。

4. application 域(ServletContext)

  • 範圍:整個 Web 應用所有用戶、所有請求(全局單例)。
  • 生命周期:應用部署啟動 → 應用卸載/服務器關閉。
  • 典型場景:全局配置參數、數據源、緩存數據、在線用戶計數、系統公告。
  • 線程安全警示:多線程共享,寫操作需同步或使用線程安全集合。

四大作用域選擇決策表

需求推薦作用域理由
頁面內臨時變量page最小範圍,自動清理
Controller→View 傳遞數據request配合 forward,請求結束自動釋放
用戶登錄狀態、個性化數據session用戶級隔離,會話級生命周期
全局配置、緩存、統計計數application應用級單例,全用戶可見
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved