1. 程式人生 > >再談Redirect 客戶端重定向 和Dispatch 伺服器端重定向

再談Redirect 客戶端重定向 和Dispatch 伺服器端重定向

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                這是兩個常常被放在一起進行比較的概念,今天對這兩個概念再重新回顧一下,前者發生在客戶端(瀏覽器),後者發生在伺服器端,因此也有人把前者稱為客戶端重定向,把後者稱為伺服器端重定向,雖然對於後者這種稱謂並不算貼切。本文原文連結:
http://blog.csdn.net/bluishglc/article/details/7953614
轉載請註明出處!
Redirect(客戶端重定向)
標準意義上的“重定向”指的是HTTP重定向,它是HTTP協議規定的一種機制。這種機制是這樣工作的:當client向server傳送一個請求,要求獲取一個資源時,在server接收到這個請求後發現請求的這個資源實際存放在另一個位置,於是server在返回的response中寫入那個請求資源的正確的URL,並設定reponse的狀態碼為301(表示這是一個要求瀏覽器重定向的response),當client接受到這個response後就會根據新的URL重新發起請求。重定向有一個典型的特症,即,當一個請求被重定向以後,最終瀏覽器上顯示的URL往往不再是開始時請求的那個URL了。這就是重定向的由來。


http重定向的一種典型應用是防止表單重複提交,其原理是:假如當前是一個使用者資訊編輯頁面,表單通過Post提交給saveUser.action, 當該請求提交後,可返回一個重定向的response,地址可以是viewUser.action,即定向到使用者詳情頁面(不能修改和提交)。當然這種防止頁面重複提交的方法作用是有限的, 如果使用者返回表單頁面,重新提交表單,或是使用者在伺服器端響應到達之前,多次點選提交按鈕(可通過JavaScript控制提交按鈕點選次數)等等。
在Servlet裡,實現客戶端重定向的方法是:response.sendRedirect()
Dispatch(伺服器端重定向)

Dispatch(Forward)指的是伺服器在處理request的過程中將request先後委託多個servlet或jsp接替進行處理的過程。最為常見的是先由一個Servlet處理(比如實現業務邏輯的計算),然後forward給一個JSP進行檢視的渲染。在Servlet裡,實現dispatch是通過RequestDispatchers來實現的,而這個類有兩個方法,一個是forward,另一個是include,相應的在JSP裡實現dispatch的標籤也有兩個:<jsp:forward/>和<jsp:include/>.    不管是forward還是include,我們可以清楚的看到,從一個servlet或jsp向別一個servlet或jsp跳轉,request和reponse始終在期間傳遞,這是伺服器端能實現dispatch模式的關鍵。換句話說,我們可以把request和reponse看作是一種資源,一系列的servlet和jsp都是在基於同一份資源完成它們職責範圍之內的計算。



注:此圖原圖引自《Head First Servlets and JSP》


           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述