在大多數(shù)的網(wǎng)絡(luò)應(yīng)用程序中,都有這樣的情況:在用戶成功登錄后轉(zhuǎn)向歡迎頁面,此處的“轉(zhuǎn)向”,就是跳轉(zhuǎn)。 動作標(biāo)記就可以實現(xiàn)頁面的跳轉(zhuǎn),用來將請求轉(zhuǎn)到另外一個 JSP、HTML 或相關(guān)的資源文件中。
當(dāng)動作標(biāo)記被執(zhí)行后,當(dāng)前的頁面將不再被執(zhí)行,而是去執(zhí)行該標(biāo)記指定的目標(biāo)頁面,但是,用戶此時在地址欄中看到的仍然是當(dāng)前網(wǎng)頁的地址,而內(nèi)容卻已經(jīng)是轉(zhuǎn)向的目標(biāo)頁面了。
其語法格式如下:
<jsp:forward page="relativeURL" | "<%=expression %>" />
如果轉(zhuǎn)向的目標(biāo)是一個動態(tài)文件,還可以向該文件傳遞參數(shù),使用格式如下:
<jsp:forward page="relativeURL" | "<%=expression %>" />
<jsp:param name="pName1" value="pValue1 | <%=expression1 %>" />
<jsp:param name="pName2" value="pValue2 | <%=expression2 %>" />
說明如下:
1、page 屬性用于指定要跳轉(zhuǎn)到的目標(biāo)文件的相對路徑,也可以通過執(zhí)行一個表達式來獲得。如果該值以“/”開頭,表示在當(dāng)前應(yīng)用的根目錄下查找目標(biāo)文件,否則,就在當(dāng)前路徑下查找目標(biāo)文件。請求被轉(zhuǎn)向到的目標(biāo)文件必須是內(nèi)部的資源,即當(dāng)前應(yīng)用中的資源。如果想通過 forward 動作轉(zhuǎn)發(fā)到外部的文件中,將出現(xiàn)資源不存在的錯誤信息。
2、forward 動作執(zhí)行后,當(dāng)前頁面將不再被執(zhí)行,而是去執(zhí)行指定的目標(biāo)頁面。
3、轉(zhuǎn)向到的文件可以是 HTML 文件、JSP 文件、程序段,或者其他能夠處理 request 對象的文件。
4、forward 動作實現(xiàn)的是請求的轉(zhuǎn)發(fā)操作,而不是請求重定向。它們之間的一個區(qū)別就是:進行請求轉(zhuǎn)發(fā)時,存儲在 request 對象中的信息會被保留并被帶到目標(biāo)頁面中;而請求重定向是重新生成一個 request 請求,然后將該請求重定向到指定的 URL,所以,事先儲存在 request 對象中的信息都不存在了。
【例1】使用<jsp:forward>動作標(biāo)記實現(xiàn)網(wǎng)頁跳轉(zhuǎn)。
① 創(chuàng)建主頁面 2-22.jsp,通過表單輸入用戶名和密碼,單擊“登錄”按鈕,利用 <jsp:forward> 動作標(biāo)記跳轉(zhuǎn)到頁面 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>
<%
//當(dāng)單擊“登錄”按鈕時,調(diào)用Form1.submit()方法提交表單至本文件,
//用戶名和密碼均不為空時,跳轉(zhuǎn)到targe.jsp,并且把用戶名和密碼以參數(shù)形式傳遞
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>
② 創(chuàng)建所轉(zhuǎn)向的目標(biāo)文件 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,結(jié)果如圖 1 所示。
圖1 使用<jsp:forward>動作標(biāo)記實現(xiàn)網(wǎng)頁跳轉(zhuǎn)