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

JSP 會話狀態管理:Session 隱含物件完整指南

     編輯:關於JSP

在 Web 應用程式開發中,維持會話狀態是開發者必須面對的核心課題。常見的解決方案包括使用 Cookies、隱藏表單欄位,或將狀態資訊直接附加在 URL 中。Java Servlet 提供了可在多個請求間持久存在的 Session 物件,允許使用者儲存與提取會話狀態資訊,而 JSP 同樣完整支援這一機制。

JSP 隱含物件:開箱即用的 Session

根據 Sun 官方 JSP 指南,JSP 提供多個「隱含物件」,意指這些物件可直接引用,無需顯式宣告或實例化。其中 request 物件繼承自 HttpServletRequest,包含當前瀏覽器請求的所有資訊(如 Cookies、HTML 表單變數等);而 session 物件也是一個隱含物件,它在第一個 JSP 頁面載入時自動建立,並關聯到 request 物件。這與 ASP 的 Session 物件概念相似,對於需要跨多個頁面完成單一交易的應用極為實用。

實戰範例:三頁式問卷流程

為示範 Session 物件的實際應用,我們設計一個包含三個頁面的模擬 Web 應用:

第一頁:q1.html(輸入姓名)

單純的 HTML 表單,將使用者輸入的姓名送往 q2.jsp:

<HTML>
<BODY>
<FORM METHOD="POST" ACTION="q2.jsp">
請輸入您的姓名:
<INPUT TYPE="TEXT" NAME="thename">
<INPUT TYPE="SUBMIT" VALUE="SUBMIT">
</FORM>
</BODY>
</HTML>

第二頁:q2.jsp(儲存姓名、詢問喜好)

此頁透過 request.getParameter 取得表單值,存入 name 變數,再以 session.putValue("thename", name) 寫入 Session。Session 物件本質是名稱/值對集合,此處鍵為 "thename",值為使用者輸入的姓名。因 Session 在會話期間持續有效,後續頁面皆可讀取。頁面並呈現第二個問題(喜歡的食物),表單送往 q3.jsp:

<HTML>
<BODY>
<%@ page language="java" %>
<%! String name=""; %>
<%
name = request.getParameter("thename");
session.putValue("thename", name);
%>
您的姓名是: <%= name %>
<p>
<FORM METHOD="POST" ACTION="q3.jsp">
您喜歡吃什麼 ?
<INPUT TYPE="TEXT" NAME="food">
<P>
<INPUT TYPE="SUBMIT" VALUE="SUBMIT">
</FORM>
</BODY>
</HTML>

第三頁:q3.jsp(顯示結果)

最終頁面從 Session 取回 "thename" 證明跨頁傳遞成功,並顯示第二頁提交的食物偏好:

<HTML>
<BODY>
<%@ page language="java" %>
<%! String food=""; %>
<%
food = request.getParameter("food");
String name = (String) session.getValue("thename");
%>
您的姓名是: <%= name %>
<P>
您喜歡吃: <%= food %>
</BODY>
</HTML>

此範例清晰展示了 JSP Session 物件如何在無需額外配置下,輕鬆實現跨請求的狀態保持,是開發多頁面交易流程的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved