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:低.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章