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>