1. 程式人生 > 實用技巧 >【JavaWeb雜記-01】重定向和轉發的區別

【JavaWeb雜記-01】重定向和轉發的區別

JavaWeb雜記-01】重定向和轉發的區別

1、啥是重定向(Redirect)?啥是轉發(Forward)?

【重定向】

客戶向伺服器傳送請求後,伺服器處理完返回訊息給客戶端告知需再發送一次固定內容的請求,客戶端便再次傳送了一個請求從而跳轉至新頁面

【轉發】

客戶端向伺服器傳送請求後,伺服器處理完之後把之前請求所攜帶的傳輸資訊(在JavaWeb中為request和response物件)一同轉發至下一個元件或網頁

2、有什麼區別?

在這裡插入圖片描述
1、位址列不同(表面)

  • 轉發:位址列不變,並不會顯示出所轉向的地址
  • 重定向:位址列改變,顯示轉向之後的地址

2、“請求 - 響應” 的次數和行為物件不同

  • 轉發:整個過程只有一次,且屬於伺服器的行為,由伺服器區發出請求,客戶端並不知曉,所以客戶端遊覽器中是不會顯示出轉向的地址
  • 重定向:整個過程至少涉及兩次“請求 - 響應” ,且屬於客戶端行為,是伺服器告訴客戶端需要轉向特定的地址,然後客戶端再自己去請求轉向地址,因此是會顯示出轉向的地址

3、速度不同

  • 轉發:轉發是在同一臺伺服器上完成,速度較快
  • 重定向:重定向需要經過數次客戶端,在多臺不同的伺服器上完成,速度較慢

4、所攜帶的資訊處理不同

  • 轉發:不會丟失所攜帶的資訊
  • 重定向:會丟失所攜帶的資訊

3、如何選擇?

1、轉發速度快

2、轉發只能訪問當前的web應用程式,當需要訪問別的web應用程式上的資源的時候便只能使用重定向