使用href超鏈接標記 客戶端跳轉
使用JavaScript 客戶端跳轉
提交表單 客戶端跳轉
使用response對象 客戶端跳轉
使用forward總做標記 服務器跳轉
使用requestDispatcher類 服務器跳轉
1、
<form name="form1" method="POST" action="login02.jsp"> <input type="text" name="name"> <input type="text" name="psd"> <input type="submit" value="提交"> <input type="reset" value="重置">
2、
<%response.setCharacterEncoding("utf-8"); response.setHeader("iso-8859-1","utf-8"); request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); String psd = request.getParameter("psd"); if(name.equals("admin")&&psd.equals("123")){%> <script type="text/javascript"> window.location="login03.jsp"; </script> <% } else{ %> <script type="text/javascript"> window.location="http://www.baidu.com"; alert(window.location.href); </script> <% }%>
頁面1提交到頁面2之后 Java代碼負責判斷 然后通過js代碼進行跳轉
3、
<%response.setCharacterEncoding("utf-8"); response.setHeader("iso-8859-1","utf-8"); request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); String psd = request.getParameter("psd"); if(name.equals("admin")&&psd.equals("123")){ response.sendRedirect("http://www.baidu.com");//路徑001 return; } else{ response.sendRedirect("login01.jsp"); return; } %>
頁面1提交到頁面3之后通過 response對象的sendredirect()方法 重定向
在上段代碼的路徑001中說明一點 sendredirect()中的URL是可以帶參數 eg sendredirect("url?name="+name);
重定向 順便傳遞參數 sendredirect注意的第二點:一般此句之后緊跟一句 return;(原因:通過sendredirect方法做重定向是在頁面處理完之后才會有實際動作的,譬如上個例子里 頁面的用戶名 密碼輸入完畢 點擊提交 然后后一個頁面判斷 判斷完即處理完 頁面3是不需要輸出的 也是輸不出來東西的 沒有return再有別的輸出是沒有意義的 而且有的時候芳兒因為無意義的輸出而報錯)
使用 response對象實現頁面的跳轉有2中方法 上面是一種 下面這種是是利用 setHeader()方法
還是頁面1提交 把頁面3的代碼修改一下就可以了:
<%response.setCharacterEncoding("utf-8"); response.setHeader("iso-8859-1","utf-8"); request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); String psd = request.getParameter("psd"); if(name.equals("admin")&&psd.equals("123")){ // response.sendRedirect("http://www.baidu.com"); // return; response.setHeader("Refresh","1;url=http://www.baidu.com"); } else{ // response.sendRedirect("login01.jsp"); // return; response.setHeader("Refresh","1;url=login01.jsp"); } %>
response.setHeader("Refresh","等待的秒數;url=絕對路徑或者相對路徑"); 路徑問題sendredirect也一樣 絕對路徑相對路徑都沒意見 上例都是等待1秒之后跳轉
response重定向和forward跳轉的區別
response:1執行完所有的代碼再跳轉到目標頁 2跳轉到目標頁后瀏覽器的URL會改變 3在瀏覽器中重定向 4可以跳轉到其他服務器上的頁面 eg:百度。
forward跳轉:1直接跳轉到目標網頁 其后的代碼不再執行 2跳轉到目標頁后URL不變 雖然URL顯示的是index1.jsp 但其實你看的index2。jsp的內容 3在服務器端重定向 4無法跳轉到其他服務器上的頁面
RequestDispatcher類
基本方法
RequestDispatcher rd = request.getRequestDispatcher("目標頁面");
rd.forward(response,request);
使用 RequestDispatcher跳轉與forward動作標記實現頁面跳轉的基本原理是一樣的。
RequestDispatcher與response重定向跳轉的區別:1執行完所有代碼再跳轉到目標頁 2跳轉到目標頁后URL不變 雖然URL顯示的是index1.jsp 但其實你看的index2.jsp的內容 3在服務器端重定向 4無法跳轉到其他服務器上的頁面
RequestDispatcher與forward動作標記跳轉的區別:forward 1 forward動作標記之后的代碼不再執行 立即跳轉到目標頁面 2指定目標頁面時既可以用絕對路徑也可以用相對路徑
RequestDispatcher跳轉 1執行完所有代碼 包括RequestDispatcher之后的所有代碼再跳轉到目標頁面 2指定目標頁面時只能用絕對路徑
Servlet可通過兩種方式得到RequestDispatcher對象:調用ServletContext的getRequestDispatcher(String path)方法,path參數指定目標組件的路徑。調用ServletRequest的getRequestDispatcher(String path)方法以上兩種方式的區別在於,前者的path參數必須是絕對路徑,而后者的path參數可以是絕對路徑,也可以是相對路徑。所謂絕對路徑,就是指以符號"/"開頭的路徑,"/"表示當前web應用的URL入口。