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

JSP 頁面間變數傳遞全攻略:Request、Form、Hidden 四大實戰模式

     編輯:關於JSP

JSP 開發中頻繁需要在頁面間傳遞變數。本文系統整理四種主流模式,附完整代碼範例與適用場景分析,助你精準選型。

模式一:超連結 Query String 傳遞 (GET)

適用:少量非敏感資料、書籤可分享、冪等查詢操作。

// a.jsp
<a href="b.jsp?id=1">傳參</a>
或動態生成:<a href="b.jsp?id=<%=var%>">傳參</a>

// b.jsp
<% String val = request.getParameter("id"); %>
<%=val%>

模式二:表單提交 (POST)

適用:大量資料、敏感資訊(密碼)、非冪等操作(新增/修改/刪除)。

// a.jsp
<form action="b.jsp" method="post">
  <input type="text" name="username">
  <input type="submit" value="提交">
</form>

// b.jsp
<% String name = request.getParameter("username"); %>
<%=name%>

模式三:表單隱藏欄位傳遞

適用:需在表單提交時攜帶伺服器端產生的狀態值(如 CSRF Token、記錄 ID)。

// a.jsp
<%! int a = 4; %>
<form action="b.jsp" method="post">
  <input type="hidden" name="b" value="<%=a%>">
  <input type="submit" value="提交">
</form>

// b.jsp (注意:隱藏欄位仍屬 request 參數,用 getParameter)
<% String val = request.getParameter("b"); %>
<%=val%>
糾正:原文示範用 request.getAttribute("b") 取值,實為錯誤。隱藏欄位屬表單參數,必須用 getParameter()。

模式四:Request 轉發共享屬性 (Server-side Forward)

適用:同一請求鏈內多資源協作(如 Servlet 處理後 forward 至 JSP)、傳遞複雜物件(非字串)。

// Servlet 或 JSP A
request.setAttribute("user", userObject);
request.getRequestDispatcher("b.jsp").forward(request, response);

// b.jsp
<% User u = (User) request.getAttribute("user"); %>

選型決策表

場景推薦模式關鍵差異
簡單查詢、可分享連結Query String (GET)URL 可見、長度限制、瀏覽器歷史記錄
表單提交、敏感資料Form POSTURL 不變、資料在 Body、無長度限制
攜帶伺服器端狀態值Hidden Field用戶不可見但可檢視原始碼、仍屬參數
同請求內資源轉發、傳遞物件Request Attribute + Forward客戶端無感、支援任意 Java 物件、地址欄不變

掌握四大模式差異,能避免常見錯誤(如混淆 Parameter/Attribute、GET/POST 語義濫用),構建清晰可維護的頁面流程。

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