JSP jsp:forward:請求轉發標籤

2020-07-16 10:04:53
JSP 中的 <jsp:forward> 動作標籤用來將請求轉發給另外一個 JSP 或 Servlet 來處理。當執行該標籤後,將不再執行當前的頁面,而是去執行該標籤指定的目標頁面或 Servlet。

語法:

<jsp:param> 子標籤用來向動態的目標檔案中傳遞引數,關鍵程式碼如下:
<jsp:forward page="url">
   <jsp:param name="name"value="value"/>
   <jsp:param name="name"value="value"/>
   ……
</jsp:forward>

引數說明:
  • page:該屬性指定了目標檔案的路徑。如果該值是以“/”開頭,表示在當前應用的根目錄下查詢檔案,否則就在當前路徑下查詢目標檔案。請求被轉向到的目標檔案必須是內部資源,即當前應用中的資源。

範例

若當前應用為 A,在根目錄下的 index.jsp 頁面中存在下面的程式碼,用來將請求轉發到應用 B 中的 logon.jsp 頁面,關鍵程式碼如下:
<jsp:forward page="http://localhost:8080/B/logon.jsp"/>
那麼將出現下面的錯誤提示:
The requested resource(/http://localhost:8080/B/logon.jsp)is not available

仔細觀察可以看到,錯誤提示中的路徑前自動加入了一個“/”,這是因為 index.jsp 頁面在應用 A 的根目錄下,當執行 <jsp:forward> 標籤時,會在該目錄下查詢 page 屬性指定的目標檔案,所以會提示資源不存在的資訊。也就是說“<jsp:forward> 動作標籤只能用於站內轉發”。

注意:<jsp:forward> 標籤實現的是請求的轉發操作,而不是請求重定向。它們之間的一個區別是:進行請求轉發時,儲存在 request 物件中的資訊會被保留並被帶到目標頁面中;而請求重定向是重新生成一個 request 請求,然後將該請求重定向到指定的 URL,所以事先儲存在 request 物件中的資訊都不存在了。

典型應用

本範例通過 <jsp:forward> 動作標籤將請求轉發到使用者登入頁面。在使用者執行專案時,首先進入的是 index.jsp 頁面,然後通過 <jsp:forward> 標籤將請求轉發到 login.jsp 頁面。程式碼如下:
<body>
  您現在位置為index.jsp!
  <jsp:forward page="login.jsp"></jsp:forward>
</body>