sendRedirect和forward方法的區別

2022-08-18 19:33:15 字數 1128 閱讀 7259

sendredirect()和forward()方法的區別

httpservletresponse介面的sendredirect()方法和requestdispatcher介面的forward()方法都可以利用另外的資源(servlet、jsp頁面或html檔案)來為客戶端進行服務,但是這兩種方法有著本質上的區別。

下面分別給出sendredirect()方法和forward()方法的工作原理圖:

互動過程如下:

1) 瀏覽器訪問servlet1;

2) servlet1想讓servlet2為客戶端服務;

3) servlet1呼叫sendredirect()方法,將客戶端的請求重定向到servlet2;

4) 瀏覽器訪問servlet2;

5) servlet2對客戶端的請求做出響應。

我們可以看出,呼叫sendredirect()方法,實際上是告訴瀏覽器servlet2所在的位置,讓瀏覽器重新訪問servlet2。呼叫sendredirect()方法,會在響應中設定location響應報頭。要注意的是,這個過程對於使用者來說是透明的,瀏覽器會自動完成新的訪問。而瀏覽器位址列顯示的url是重定向之後的url。

而forward()方法的互動過程如下:

1) 瀏覽器訪問servlet1;

2) servlet1想讓servlet2對客戶端的請求進行響應,於是呼叫forward()方法,將請求**給servlet2進行處理。

3) servlet2對請求請出響應。

從上圖的互動過程可以看出,呼叫forward()方法,對瀏覽器來說是透明的,瀏覽器並不知道為其服務的servlet已經換成servlet2了,它只知道發出了乙個請求,獲得了乙個響應。而位址列顯示的url始終會是原始請求的url。

此外,sendredirect()方法和forward()方法還有乙個區別,那就是sendredirect()方法不但可以在位於同一主機上的不同web應用程式之間進行重定向,而且可以將客戶端重定向到其他伺服器上的web應用程式資源。

forward和sendredirect的區別

sendredirect forward 是不同的 request 雖然是不同的物件,但是,可以取到上乙個頁面的內容 send 後的語句會繼續執行,除非 return forward 後的語句不會繼續傳送給客戶端 速度慢 速度快 需要到客戶端的往返,可以轉到任何頁面,伺服器內部轉換,位址列有變化 位...

linux shell if和case和for語句

linux shell if和case和for語句 bin bash for i 1 i 15 i do for和 以及 和 之間可以有空格也可以沒有空格 if i le 10 then 第乙個 中括號 和if及 i之間都必須有空格,10和第二個 中括號 之間必須有空格,但是 中括號 和 之間的空格...

Forword與sendRedirect的區別

二 本質區別 解釋一 一句話,是伺服器行為,重定向是客戶端行為。為什麼這樣說呢,這就要看兩個動作的工作流程 過程 客戶瀏覽器傳送http請求 web伺服器接受此請求 呼叫內部的乙個方法在容器內部完成請求處理和 動作 將目標資源傳送給客戶 在這裡,的路徑必須是同乙個web容器下的url,其不能轉向到其...