在大多數的網絡應用程序中,都有這樣的情況:在用戶成功登錄后轉向歡迎頁面,此處的“轉向”,就是跳轉。 動作標記就可以實現頁面的跳轉,用來將請求轉到另外一個 JSP、HTML 或相關的資源文件中。
當動作標記被執行后,當前的頁面將不再被執行,而是去執行該標記指定的目標頁面,但是,用戶此時在地址欄中看到的仍然是當前網頁的地址,而內容卻已經是轉向的目標頁面了。
其語法格式如下:
<jsp:forward page="relativeURL" | "<%=expression %>" />
如果轉向的目標是一個動態文件,還可以向該文件傳遞參數,使用格式如下:
<jsp:forward page="relativeURL" | "<%=expression %>" />
<jsp:param name="pName1" value="pValue1 | <%=expression1 %>" />
<jsp:param name="pName2" value="pValue2 | <%=expression2 %>" />
說明如下:
1、page 屬性用于指定要跳轉到的目標文件的相對路徑,也可以通過執行一個表達式來獲得。如果該值以“/”開頭,表示在當前應用的根目錄下查找目標文件,否則,就在當前路徑下查找目標文件。請求被轉向到的目標文件必須是內部的資源,即當前應用中的資源。如果想通過 forward 動作轉發到外部的文件中,將出現資源不存在的錯誤信息。
2、forward 動作執行后,當前頁面將不再被執行,而是去執行指定的目標頁面。
3、轉向到的文件可以是 HTML 文件、JSP 文件、程序段,或者其他能夠處理 request 對象的文件。
4、forward 動作實現的是請求的轉發操作,而不是請求重定向。它們之間的一個區別就是:進行請求轉發時,存儲在 request 對象中的信息會被保留并被帶到目標頁面中;而請求重定向是重新生成一個 request 請求,然后將該請求重定向到指定的 URL,所以,事先儲存在 request 對象中的信息都不存在了。
【例1】使用<jsp:forward>動作標記實現網頁跳轉。
① 創建主頁面 2-22.jsp,通過表單輸入用戶名和密碼,單擊“登錄”按鈕,利用 <jsp:forward> 動作標記跳轉到頁面 target.jsp。具體代碼如下:
<%@ page contentType="text/html;charset=utf-8" %>
<html>
<body>
<form action=" " method="post" name="Form"> <!--提交給本頁處理-->
用戶名:<input name="UserName" type="text" /> <br/>
密 碼:<input name="UserPwd" type="text" /> <br/>
<input type="submit" value="登錄" />
</form>
<%
//當單擊“登錄”按鈕時,調用Form1.submit()方法提交表單至本文件,
//用戶名和密碼均不為空時,跳轉到targe.jsp,并且把用戶名和密碼以參數形式傳遞
String s1=null,s2=null;
s1=request.getParameter("UserName");
s2=request.getParameter("UserPwd");
if(s1!=null && s2!=null)
{
%>
<jsp:forward page="target.jsp" >
<jsp:param name="Name" value="<%=s1%>" />
<jsp:param name="Pwd" value="<%=s2%>" />
</jsp:forward >
<%
}
%>
</body>
</html>
② 創建所轉向的目標文件 target.jsp,具體代碼如下:
<%@ page contentType="text/html;charset=utf-8" %>
<html>
<body>
<%
String strName=request.getParameter("UserName");
String strPwd=request.getParameter("UserPwd");
out.println(strName+"您好,您的密碼是:"+strPwd);
%>
</body>
</html>
③ 運行 2-22.jsp,結果如圖 1 所示。
圖1 使用<jsp:forward>動作標記實現網頁跳轉