(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對象:
ServletContext的getRequestDispatcher()
ServletRequest的getRequestDispatcher()
調用ServletContext的getRequestDispatcher(String path)方法,path參數指定目標組件的路徑。
調用ServletRequest的getRequestDispatcher(String path)方法與上一個方式的區別在於,前者的path參數必須是絕對路徑,而後者的path參數可以是絕對路徑,也可以是相對路徑。所謂絕對路徑,就是指以符號"/"開頭的路徑,"/"表示當前web應用的URL入口。
最後比較一下response重定向和forward跳轉的區別
response:
1執行完所有的代碼再跳轉到目標頁
2跳轉到目標頁後瀏覽器的URL會改變
3在瀏覽器中重定向
4可以跳轉到其他服務器上的頁面,例如”百度”。
forward跳轉 :
1直接跳轉到目標網頁 其後的代碼不再執行
2跳轉到目標頁後URL不變
3在服務器端重定向
4無法跳轉到其他服務器上的頁面