web中的重定向与转发
Redirect:重定向(客戶端重定向)是HTTP協(xié)議規(guī)定的一種機(jī)制:當(dāng)client向server發(fā)送一個請求,要求獲取一個資源時,在server接收到這個請求后發(fā)現(xiàn)請求的這個資源實際存放在另一個位置,于是server在返回的response中寫入那個請求資源的正確的URL,并設(shè)置reponse的狀態(tài)碼為301(表示這是一個要求瀏覽器重定向的response),當(dāng)client接受到這個response后就會根據(jù)新的URL重新發(fā)起請求。重定向有一個典型的特癥,即,當(dāng)一個請求被重定向以后,最終瀏覽器上顯示的URL往往不再是開始時請求的那個URL了。在Servlet里,實現(xiàn)客戶端重定向的方法是:response.sendRedirect()。
Dispatch(Forward):轉(zhuǎn)發(fā)(又稱為服務(wù)器端重定向)Dispatch(Forward)指的是服務(wù)器在處理request的過程中將request先后委托多個servlet或jsp接替進(jìn)行處理的過程。最為常見的是先由一個Servlet處理(比如實現(xiàn)業(yè)務(wù)邏輯的計算),然后forward給一個JSP進(jìn)行視圖的渲染。在Servlet里,實現(xiàn)dispatch是通過RequestDispatchers來實現(xiàn)的,而這個類有兩個方法,一個是forward,另一個是include,相應(yīng)的在JSP里實現(xiàn)dispatch的標(biāo)簽也有兩個:<jsp:forward/>和<jsp:include/>.不管是forward還是include,我們可以清楚的看到,從一個servlet或jsp向別一個servlet或jsp跳轉(zhuǎn),request和reponse始終在期間傳遞,這是服務(wù)器端能實現(xiàn)dispatch模式的關(guān)鍵。換句話說,我們可以把request和reponse看作是一種資源,一系列的servlet和jsp都是在基于同一份資源完成它們職責(zé)范圍之內(nèi)的計算。
兩者的區(qū)別是:
重定向是客戶端行為,轉(zhuǎn)發(fā)是服務(wù)器行為。
重定向過程:客戶瀏覽器發(fā)送http請求——》web服務(wù)器接受后發(fā)送302狀態(tài)碼響應(yīng)及對應(yīng)新的location給客戶瀏覽器——》客戶瀏覽器發(fā)現(xiàn)是302響應(yīng),則自動再發(fā)送一個新的http請求,請求url是新的location地址——》服務(wù)器根據(jù)此請求尋找資源并發(fā)送給客戶。在這里location可以重定向到任意URL,既然是瀏覽器重新發(fā)出了請求,則就沒有什么request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑,客戶可以觀察到地址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。
轉(zhuǎn)發(fā)過程:客戶瀏覽器發(fā)送http請求——》web服務(wù)器接受此請求——》調(diào)用內(nèi)部的一個方法在容器內(nèi)部完成請求處理和轉(zhuǎn)發(fā)動作——》將目標(biāo)資源發(fā)送給客戶;在這里,轉(zhuǎn)發(fā)的路徑必須是同一個web容器下的url,其不能轉(zhuǎn)向到其他的web路徑上去,中間傳遞的是自己的容器內(nèi)的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到服務(wù)器做了轉(zhuǎn)發(fā)的。轉(zhuǎn)發(fā)行為是瀏覽器只做了一次訪問請求。
| 類別 | 概念 | 共享數(shù)據(jù) | 應(yīng)用 |
| Redirect | URL重新定向:可以是任意的URL | 不能共享request里面的數(shù)據(jù) | 一般用于用戶注銷登錄時返回主頁面和跳轉(zhuǎn)到其它的網(wǎng)站等等 |
| Forward | 頁面的轉(zhuǎn)發(fā):只能是同一個Web應(yīng)用程序的其他Web組件 | 轉(zhuǎn)發(fā)頁面和轉(zhuǎn)發(fā)到的頁面可以共性request里面的數(shù)據(jù) | 一般用于用戶登錄的時候根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊等等 |
來自為知筆記(Wiz)
總結(jié)
以上是生活随笔為你收集整理的web中的重定向与转发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keep怎么取消自动续费
- 下一篇: windows如何查看电脑开关机记录