<jsp:forward page="{relativeURL | <%= expression %>}" />
<jsp:forward page="{relativeURL | <%= expression %>}">
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />+
</jsp:forward>
test1.jsp
<HTML><HEAD><TITLE>forward test</TITLE></HEAD>
<BODY>
<!-- 轉發至 test2.jsp -->
<jsp:forward page="/test2.jsp" />
</BODY></HTML>
test2.jsp
<HTML><BODY>
<% out.println("這是 test2.jsp 頁面產生的輸出"); %>
</BODY></HTML>
瀏覽器訪問 `test1.jsp` 顯示 test2 的輸出,網址列仍為 `test1.jsp`。
test3.jsp
<HTML><BODY>
<jsp:forward page="/test4.jsp">
<jsp:param name="name" value="powerman" />
<jsp:param name="address" value="北京西大街188號" />
</jsp:forward>
</BODY></HTML>
test4.jsp
<HTML><BODY>
<%
out.println("這是 test4.jsp 頁面產生的輸出<br>");
out.println("姓名:" + request.getParameter("name") + "<br>");
out.println("地址:" + request.getParameter("address") + "<br>");
%>
</BODY></HTML>
輸出:
這是 test4.jsp 頁面產生的輸出
姓名:powerman
地址:北京西大街188號
| 特性 | <jsp:forward> | response.sendRedirect() |
|---|---|---|
| 處理位置 | 伺服器端 | 客戶端 (瀏覽器) |
| 瀏覽器 URL | 不變 | 改為新 URL |
| Request 物件 | 共享 | 新請求,原 request 失效 |
| 速度 | 較快 (單次請求) | 較慢 (兩次請求) |
| 跨域/跨容器 | 不可 | 可 |
| 適用場景 | 內部流程控制、MVC Controller 轉 View | 登入後跳轉、外部連結、POST 後重導向防重複提交 |