Web開發中的伺服器跳轉與客戶端跳轉

2022-05-06 14:15:10 字數 1391 閱讀 9808

兩者比較如下:

跳轉型別

客戶端請求次數

服務端響應次數

url變化

站外跳轉

作用域

伺服器跳轉11

無否客戶端跳轉22

有能請求次數與響應次數

服務端跳**客戶端發起一次請求,服務端接收請求後,將結果跳轉到另乙個頁面,作為此次請求結果返回給客戶端

客戶端跳**客戶端發起一次請求,服務端返回此次請求的結果,結果內容是乙個url位址,客戶端拿到此url,再次傳送一次請求,服務端再次響應最終結果給客戶端

所以,對於伺服器跳轉,請求次數和響應次數均是1次,對於 客戶端跳轉,請求次數和響應次數均是2次

url是否變化

服務端跳**只是服務端內部不斷進行forward,不管進行多少次forward,客戶端是不知情的,服務端將最後的結果返回給客戶端,即完成此次請求。客戶端的url沒有變化。

客戶端跳**客戶端發起兩次請求,url發生變化(ps:除非閒得蛋疼,兩次請求的url位址是一樣的)

能否進行站外跳轉

服務端跳**不能進行站外跳轉。服務端請求只能在服務內,將請求響應的結果不斷的跳轉, 使用的都是服務內部的資源。不能跳到其他服務上去。

客戶端跳**可以。直接跳轉到其他服務的url即可

作用域

以jsp的四大作用域,關於作用域詳見位址

pagecontext:當前頁面

request:當前請求

session:當前會話

從上面我們說請求次數和響應次數就可以知道,對於客戶端跳轉,pagecontext、request發生了改變。因為客戶端url發生了變化,pagecontext即發生了變化,客戶端是傳送了是兩次請求,request即發生了變化。所以如果使用客戶端跳轉的時候,共享資料建議存放在session中。

服務端為什麼沒有發生變化,我們從selvet實現服務端跳轉方法forward不難看出, forward方法呼叫時,帶著request、response引數,即不論服務端進行多少次forward,都是使用同乙個request、response。所以pagecontext、request作用域並沒有變化。共享資料放在這兩個作用域的物件中,依然可以取到。

ps:selvet、struts2、springmvc  實現請求跳轉的方式有差異,但是其本質是一樣的。

客戶端跳轉與伺服器跳轉的區別

客戶端跳轉時用httpservletresopse物件的sendredirect函式實現,伺服器端跳轉是使用requestdispather物件的forward方法實現的。這兩者之間的區別主要體現在三個方面 1.使用伺服器端跳轉時,客戶瀏覽器的位址列並不會顯示目標位址的url,而是用客戶端跳轉時,位...

客戶端跳轉與伺服器端跳轉

客戶端跳轉時用httpservletresopse物件的sendredirect函式實現,伺服器端跳轉是使用requestdispather物件的forward方法實現的。這兩者之間的區別主要體現在三個方面 1.使用伺服器端跳轉時,客戶瀏覽器的位址列並不會顯示目標位址的url,而是用客戶端跳轉時,位...

客戶端跳轉與伺服器端跳轉

客戶端跳轉時用httpservletresopse物件的sendredirect函式實現,伺服器端跳轉是使用requestdispather物件的forward方法實現的。這兩者之間的區別主要體現在三個方面 1.使用伺服器端跳轉時,客戶瀏覽器的位址列並不會顯示目標位址的url,而是用客戶端跳轉時,位...