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


圖1 使用<jsp:forward>動(dòng)作標(biāo)記實(shí)現(xiàn)網(wǎng)頁(yè)跳轉(zhuǎn)