【Java基礎】 Java跳轉頁面的兩種方法以及它們的區別

(1)使用response對象,爲Jsp的內置對象

直接使用sendRedirect()重定向, 重定向後在瀏覽器地址欄上會出現重定向頁面的URL.代碼:  

<%  
response.sendRedirect("http://www.baidu.com");
return;        
%>

說明: sendredirect()中的URL是可以帶參數的,例如sendredirect("url?name="+name);我們可以在跳轉的時候傳入參數.

此外,一般response.sendRedirect()之後緊跟一句 return;我們已經知道response.sendRedirect是通過瀏覽器來做轉向的,所以只有在頁面處理完成後,纔會有實際的動作。既然已經要做轉向了,那麼後的輸出就已經沒有意義了,而且有可能會因爲後面的輸出導致轉向失敗。

使用setHeader()方法,直接修改地址欄來實現頁面的重定向

<%  
response.setHeader("Refresh","1;url=http://www.baidu.com");        
%>

標準格式: response.setHeader("Refresh","等待的秒數;url=絕對路徑或者相對路徑");上例是等待1秒之後跳轉.

(2)使用requestDispatcher類

基本方法

RequestDispatcher  rd = request.getRequestDispatcher("想要跳轉的地址");  
rd.forward(response,request);

Servlet可通過兩種方式得到RequestDispatcher對象:

  • ServletContextgetRequestDispatcher()    

  • ServletRequestgetRequestDispatcher()  

調用ServletContextgetRequestDispatcher(String path)方法,path參數指定目標組件的路徑。

調用ServletRequestgetRequestDispatcher(String path)方法與上一個方式的區別在於,前者的path參數必須是絕對路徑,而後者的path參數可以是絕對路徑,也可以是相對路徑。所謂絕對路徑,就是指以符號"/"開頭的路徑,"/"表示當前web應用的URL入口。

最後比較一下response重定向和forward跳轉的區

response   

  • 1執行完所有的代碼再跳轉到目標頁

  • 2跳轉到目標頁後瀏覽器的URL會改變

  • 3在瀏覽器中重定向

  • 4可以跳轉到其他服務器上的頁面,例如”百度”。

forward跳轉

  • 1直接跳轉到目標網頁 其後的代碼不再執行

  • 2跳轉到目標頁後URL不變

  • 3在服務器端重定向

  • 4無法跳轉到其他服務器上的頁面

 

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