java web轉發與重定向
阿新 • • 發佈:2019-02-17
一、轉發
web專案內部轉發到另一個頁面或者另一個servlet
二、重定向
重定向到另一個地址,可以在web專案內,也可以在專案外
三、對比:
轉發時,會將request物件轉到另一個轉向的servlet,因此可以在request中傳遞資料;
重定向相當於服務端返回302,客戶端重新再去請求新的地址,是一個新的request物件,因此不能通過request物件傳遞資料
轉發時,瀏覽器位址列不會改變,相當於服務端的內部的轉發,客戶端無感知;
重定向時客戶端瀏覽器地址會變化,相當於服務端告訴客戶端去另一個地址,瀏覽器再重新請求一個新的地址,更多可以理解為客戶端的轉換
轉發只能在web應用內的資源,重定向可以是任一個uri地址
四、相關方法
轉發: request.getRequestDispatcher("index.jsp").forward(request, response);
重定向:response.sendRedirect("/day11/one?aaa=123qwe"); response.sendRedirect("www.baidu.com");
1.轉發在服務端完成,重定向在客戶端完成
2.轉發位址列不變,重定向位址列變化
3.轉發不會執行轉發後的程式碼,重定向會執行後面的程式碼
4.轉發是一次請求,重定向是兩次請求
5.轉發在同一臺伺服器,重定向可以在不同的伺服器
6.轉發快,重定向慢