1.地址變化
forward:地址欄url不改變
redirect:地址欄url改變
2.數(shù)據(jù)共享
forward:轉(zhuǎn)發(fā)頁面和轉(zhuǎn)發(fā)到的頁面可以共享request里面的數(shù)據(jù)
redirect:不共享
3.使用
forward:一般用于用戶登陸的時候,根據(jù)角色轉(zhuǎn)發(fā)到相應的模塊云芦,效率高
redirect:一般用于用戶注銷登陸時返回主頁面和跳轉(zhuǎn)到其它的網(wǎng)站,效率低
4.解釋
forward:客戶瀏覽器發(fā)送http請求 --->? web服務器接受此請求?--->?調(diào)用內(nèi)部的一個方法在容器內(nèi)部完成請求處理和轉(zhuǎn)發(fā)動作?--->?將目標資源發(fā)送給客戶; 在這里岖食,轉(zhuǎn)發(fā)的路徑必須是同一個web容器下的url,其不能轉(zhuǎn)向到其他的web路徑上去,中間傳遞的是自己的容器內(nèi)的request染坯。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑可柿,也就是說客戶是感覺不到服務器做了轉(zhuǎn)發(fā)的护奈。轉(zhuǎn)發(fā)行為是瀏覽器只做了一次訪問請求。
redirect:客戶瀏覽器發(fā)送http請求?--->?web服務器接受后發(fā)送302狀態(tài)碼響應及對應新的location給客戶瀏覽器?--->?客戶瀏覽器發(fā)現(xiàn)是302響應唱较,則自動再發(fā)送一個新的http請求扎唾,請求url是新的location地址--?--->?服務器根據(jù)此請求尋找資源并發(fā)送給客戶。實際上是兩次請求南缓。在這里 location可以重定向到任意URL胸遇,既然是瀏覽器重新發(fā)出了請求,則就沒有什么request傳遞的概念了汉形。在客戶瀏覽器路徑欄顯示的是其重定向的路徑狐榔,客戶可以觀察到地址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的获雕。