(一)JSP中兩種跳轉(zhuǎn)
在JSP中,跳轉(zhuǎn)頁面有兩種方式:
1.forward跳轉(zhuǎn):
<jsp:forward page="跳轉(zhuǎn)頁面地址" />
2.response跳轉(zhuǎn):
response.sendRedirect("跳轉(zhuǎn)頁面地址");
兩種跳轉(zhuǎn)的區(qū)別如下:
1.forward跳轉(zhuǎn):
a.服務(wù)器端跳轉(zhuǎn),地址欄不改變;
b.執(zhí)行到跳轉(zhuǎn)語句后馬上無條件跳轉(zhuǎn),之后的代碼不再執(zhí)行(跳轉(zhuǎn)之前一定要釋放全部資源);
c.request設(shè)置的屬性在跳轉(zhuǎn)后的頁面仍可以使用;
d.使用<jsp:param name="參數(shù)名" value="參數(shù)值" />傳遞參數(shù)。
2.response跳轉(zhuǎn):
a.客戶端跳轉(zhuǎn),地址欄改變;
b.所有代碼執(zhí)行完畢后跳轉(zhuǎn);
c.跳轉(zhuǎn)后的頁面不能使用上一個頁面的request屬性;
d.使用地址重寫傳遞參數(shù)(response.sendRedirect("URL?參數(shù)名=參數(shù)值"))。
示例: forward.jsp
1 <%@ page contentType = "text/html; charset = gb2312"%>
2 <%
3 request.setCharacterEncoding("gb2312");
4 %>
5
6 <html>
7 <head>
8 <title> Forward.jsp </title>
9 </head>
10
11 <body>
12 <jsp:forward page = "jump.jsp" />
13 </body>
14 </html>
response.jsp
1 <%@ page contentType = "text/html; charset = gb2312"%>
2 <%
3 request.setCharacterEncoding("gb2312");
4 %>
5
6 <html>
7 <head>
8 <title> 跳轉(zhuǎn)頁面 </title>
9 </head>
10
11 <body>
12 <%
13 response.sendRedirect("jump.jsp");
14 %>
15 </body>
16 </html>
jump.jsp
1 <html>
2 <head>
3 <title> 跳轉(zhuǎn)頁面 </title>
4 </head>
5 <body>
6 <h1> Hello Word!!! </h1>
7 </body>
8 </html>
可以發(fā)現(xiàn)使用forward跳轉(zhuǎn),地址欄的url沒變;而使用response.sendRedirect()地址欄的url有變.
(二)servlet的兩種轉(zhuǎn)向
跳轉(zhuǎn)有兩種方式,重定向與轉(zhuǎn)發(fā)。
重定向可以使用HttpServletResponse對象
如 response.sendRedirect(\"xxx.jsp\"); //參數(shù)為url地址
上面方法如同js的location.href=\"xxx.jsp\";
轉(zhuǎn)發(fā)使用HttpServletRequest對象
request.getRequestDispatcher(\"xxx.jsp\").forward(request, response);
轉(zhuǎn)發(fā)則把請求交給jsp頁來處理