JSP頁面跳轉的幾種實現方法

使用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入口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章