Javaweb中頁面跳轉的幾種方式
1.轉發
request.getRequestDispatcher("/homework0608/1.jsp").forward(request, response);
2.重定向
方式一:
response.setHeader("Refresh","5,URL=http://localhost:8888/homework0606/login.jsp") ;
方式二:
response.setStatus(302);
response.setHeader("location","newurl");
方式三:response.sendRedirect(“newurl
重定向小結
* 重定向是兩次請求
* 重定向的URL可以是其他應用,也可是本應用
* 重定向的響應頭為302,必須要有Location響應頭
* 重定向不需要再使用response.getWriter()或者response.getOutputStream.
3.其他方式
標籤:<jsp:forward page="apage.jsp" />
<meta http-equiv="refresh" content="0; URL=http://www.csdn.net">
連結:<a href=”1.jsp”></a>
重定向域轉發的
重定向是客戶端行為,轉發是伺服器行為
重定向過程:客戶瀏覽器傳送http請求—>web伺服器接受後傳送302狀態碼響應及對應新的location給客戶瀏覽器—>客戶瀏覽器發現是302響應,則自動再發送一個新的http請求,請求url是新的location地址—>伺服器根據此請求尋找資源併發送給客戶。在這裡location可以重定向到任意URL,既然是瀏覽器重新發出了請求,則就沒有什麼request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑,客戶可以觀察到地址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。
轉發過程:客戶瀏覽器傳送http請求—>web
轉發和重定向的比較:
* 請求轉發是一個請求,重定向是兩個請求
* 請求轉發後瀏覽器的URL不會發生改變(引數除外),重定向後瀏覽器的URL會發生改變
* 請求轉發的目標只能是本應用資源,而重定向可一個其他應用
* 請求轉發AServlet和BServlet,要麼都是GET,要麼都是POST,取決於AServlet
* 重定向第二個請求一定是GET
* 轉發由request呼叫方法,重定向是response。