Java技術分享之Forward和Redirect這兩種轉發方式的區別

千鋒武漢 發佈 2020-05-26T04:12:34+00:00

用戶向伺服器發送了一次HTTP請求,該請求可能會經過多個信息資源處理以後才返回給用戶,各個信息資源使用請求轉發機制相互轉發請求,但是用戶是感覺不到請求轉發的。

用戶向伺服器發送了一次HTTP請求,該請求可能會經過多個信息資源處理以後才返回給用戶,各個信息資源使用請求轉發機制相互轉發請求,但是用戶是感覺不到請求轉發的。根據轉發方式的不同,可以區分為直接請求轉發(Forward)和間接請求轉發(Redirect),那麼這兩種轉發方式有何區別呢?本文將由千鋒武漢Java培訓老師跟大家分享一下。

一、從定義上看:

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

redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址。所以地址欄顯示的是新的URL。所以redirect等於客戶端向伺服器端發出兩次request,同時也接受兩次response。

二、從原理上看:

Forward(直接轉發方式)用的更多一些,一般說的請求轉發指的就是直接轉發方式。Web應用程式大多會有一個控制器。由控制器來控制請求應該轉發給那個信息資源。然後由這些信息資源處理請求,處理完以後還可能轉發給另外的信息資源來返回給用戶,這個過程就是經典的MVC模式。

Redirect(間接轉發方式),有時也叫重定向,它一般用於避免用戶的非正常訪問。例如:用戶在沒有登錄的情況下訪問後台資源,Servlet可以將該HTTP請求重定向到登錄頁面,讓用戶登錄以後再訪問。

三、從工作流程上看:

forword過程:客戶瀏覽器發送http請求--->web伺服器接受此請求--->調用內部的一個方法在容器內部完成請求處理和轉發動作--->將目標資源 發送給客戶。

redirect過程:客戶瀏覽器發送http請求--->web伺服器接受後發送302狀態碼響應及對應新的location給客戶瀏覽器--->客戶瀏覽器發現 是302響應,則自動再發送一個新的http請求,請求url是新的location地址--->伺服器根據此請求尋找資源並發送給客戶。

四、從運用的地方上看

forword 一般用於用戶登錄的時候,根據角色轉發到相應的模塊;

redirect一般用於用戶註銷登錄時返回主頁面或者跳轉到其他網站。

五、從效率上看:

forword效率高,而redirect效率低。

以上就是千鋒武漢Java培訓機構講師對Forward和Redirect的區別的總結介紹,歡迎大家一起交流補充!

學習Java開發,可以參考千鋒武漢Java培訓的學習路線,該學習路線羅列了各階段完整的Java學習知識,根據千鋒提供的Java學習路線圖,可以讓你對學好Java開發需要掌握的知識有個清晰的了解,並能快速入門Java開發。想了解更多Java技術,你可以關注「武漢千鋒」微信公眾號,定期發布技術熱點和就業趨勢分析。

關鍵字: