頁(yè)面跳轉(zhuǎn)的幾種方式:
--------------(網(wǎng)絡(luò)收藏)
http頭實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn):
out.println("<meta http-equiv='refresh' content='0;url=xxxxx.jsp'>");
content是指跳轉(zhuǎn)的時(shí)間間隔,單位為秒
----------------------------------------------
forward方法實(shí)現(xiàn)跳轉(zhuǎn):
<%
String url = "index.jsp";
%>
<jsp:forward page=url>
<jsp:param name="id" value="<%=userid%>">
</jsp:forward>
-------------------------------------------------
response跳轉(zhuǎn):
response.sendRedirect(url);
或
response.encodeRedirectURL(response.encodeRedirectURL(url));
對(duì)要用的URL編碼,如果cookie打開的話,sessionid通過(guò)cookie傳遞,這個(gè)方法原樣返回;如果cookie沒(méi)打開的話,這個(gè)方法會(huì)在你的url后面加上sessionid的參數(shù),保證你的session傳遞。
---------------------------------------------------
區(qū)別:
forward執(zhí)行后,地址欄鏈接不變
sendRedirect()執(zhí)行后,地址欄鏈接會(huì)更換
由此可知forward的執(zhí)行是在服務(wù)器完成的,重定向到其他文件取出內(nèi)容輸出到頁(yè)面,并且可以附加參數(shù)傳遞
而sendRedirect,可以認(rèn)為是客戶端完成,相當(dāng)于客戶端又重新發(fā)了一個(gè)get請(qǐng)求,要服務(wù)器傳輸另一個(gè)文件過(guò)來(lái)。
<jsp:forward>能夠向目標(biāo)文件傳送參數(shù)和值。如果使用了<jsp:param/>標(biāo)簽的話
,目標(biāo)文件必須是一個(gè)動(dòng)態(tài)的文件,能夠處理參數(shù)。如果使用了非緩沖輸出,那么使用
<jsp:forward>時(shí)就要小心;如果使用<jsp:forward>之前,JSP文件已經(jīng)有了數(shù)據(jù),那么
文件運(yùn)行將會(huì)出錯(cuò)。<jsp:forward>標(biāo)簽從一個(gè)JSP文件向另一個(gè)文件傳遞一個(gè)包含用戶
請(qǐng)求的request對(duì)象,<jsp:forward>標(biāo)簽以下的代碼將不能運(yùn)行。