1. 程式人生 > >Web開發中伺服器轉發方式forward和redirect的區別

Web開發中伺服器轉發方式forward和redirect的區別

使用者向伺服器傳送了一次HTTP請求,該請求可能會經過多個資訊資源處理以後才返回給使用者,各個資訊資源使用請求轉發機制相互轉發請求,但是使用者是感覺不到請求轉發的。根據轉發方式的不同,可以區分為直接請求轉發(Forward)和間接請求轉發(Redirect)兩種有何區別呢?本篇在回答該問題的同時全面的講解兩種請求轉發方式的原理和區別。Forward和Redirect代表了兩種請求轉發方式:直接轉發和間接轉發。

直接轉發方式(Forward),客戶端和瀏覽器只發出一次請求,Servlet、HTML、JSP或其它資訊資源,由第二個資訊資源響應該請求,在請求物件request中,儲存的物件對於一個每個資訊資源是共享的。
間接轉發方式(Redirect)實際是兩次HTTP請求,伺服器端在響應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。

那麼總結來說,這兩種方式的區別可以概括為以下幾個點:

1.從位址列顯示來說
forward是伺服器請求資源,伺服器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容再發給瀏覽器.瀏覽器根本不知道伺服器傳送的內容從哪裡來的,所以它的位址列還是原來的地址.
redirect是服務端根據邏輯,傳送一個狀態碼,告訴瀏覽器重新去請求那個地址.所以位址列顯示的是新的URL.


2.從資料共享來說
forward:轉發頁面和轉發到的頁面可以共享request裡面的資料.
redirect:不能共享資料.


3.從運用地方來說
forward:一般用於使用者登陸的時候,根據角色轉發到相應的模組.
redirect:一般用於使用者登出登陸時返回主頁面和跳轉到其它的網站等.


4.從效率來說
forward:高.
redirect:低.