1. 程式人生 > >轉發(request)和重定向(response)的區別

轉發(request)和重定向(response)的區別

1.從位址列顯示來說

request.getRequestDispatcher().forward是伺服器請求資源,伺服器直接訪問目標地址的URL,把那個URL的響應(response)內容讀取過來,然後把這些內容再發給瀏覽器,瀏覽器根本不知道伺服器傳送的內容從哪裡來的,所以它的位址列還是原來的地址。

response.sendRedirect()是服務端根據邏輯,傳送一個狀態碼,告訴瀏覽器重新去請求那個地址.所以位址列顯示的是新的URL.

2.從資料共享來說

request.getRequestDispatcher().forward:轉發頁面和轉發到的頁面可以共享request裡面的資料.
response.sendRedirect()

:不能共享資料.

3.從運用地方來說

request.getRequestDispatcher().forward:一般用於使用者登陸的時候,根據角色轉發到相應的模組.
response.sendRedirect():一般用於使用者登出登陸時返回主頁面和跳轉到其它的網站等.

4.從效率來說

request.getRequestDispatcher().forward:高.
response.sendRedirect():低.