jsp動作元素之forward指令


forward指令用於將頁面響應轉發到另外的頁面。既可以轉發到靜態的HTML頁面,也可以轉發到動態的JSP頁面,或者轉發到容器中的Servlet。

forward指令格式如下:

<jsp:forward page="{relativeURL|<%=expression%>}">
	{jsp:param..../>}
</jsp:forward>

jsp: param用於在轉發時增加額外的請求參數。請求參數的值可以通過HttpServletRequest類的getParameter()方法獲得。

下面是代碼實例:

jsp-forward.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>forward's original page</title>
</head>
<body>
<h3> forward's original page </h3>
<jsp:forward page="forward-result.jsp">
    <jsp:param name="age" value="29" />
</jsp:forward>
</body>
</html>
 

 

此jsp頁面的作用是將客戶端的請求轉發到forward-result.jsp頁面,轉發請求時增加請求參數:參數名稱和參數值。

在forward-result.jsp頁面中,使用request內置對象來獲取增加的請求值。

forward-result.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>forward's result page</title>
</head>
<body>
<%=request.getParameter("age")%>
<%=request.getParameter("username")%>

</body>
</html>

 

執行效果如下所示:

image

 

從圖中可以看出,執行forward指令時,用戶請求的地址依然沒有發生變化,但頁面內容卻完全被forward目標頁的內容。

另外,在執行forward指令轉發請求時,客戶端的請求參數不會丟失。來看下面例子,該頁沒有任何動態內容,只是一個靜態的表單頁,作用是將請求參數提交到jsp-forward.jsp頁。

form.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>submit</title>
</head>
<body>
<form id="login" method="post" action="jsp-forward.jsp">
<input type="text" name="username">
<input type="submit" value="login">
</form>
</body>
</html>

 

修改forward-result.jsp頁面,增加輸出表單參數的代碼,如下:

<%=request.getParameter("username")%>

 

在表單提交頁面中的文本框中輸入任意字符串后提交該表單,運行結果如下圖所示:

image

 

從表面看,forward指令給人一種感覺:它將用戶請求“轉發”到另一個新頁面,但實際上,forward並沒有重新向新頁面發送請求,他只是完全采用了新頁面來對用戶生成響應——請求依然是一次請求,所以請求參數,請求屬性都不會丟失。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM