RequestDispatcher接口

在Servlet中,利用RequestDispatcher對象,可以將請求轉發給另外

一個Servlet或JSP頁面,甚至是HTML頁面,來處理對請求的響應。

一,RequestDispatcher接口方法簡介 

     1,RequestDispatcher對象由Servlet容器來創建,封裝一個

由路徑所標識的服務器資源。   

     2,RequestDispatcher接口中定義了二種方法用於請求轉發: 

 

           forward(ServletRequest,ServletResponse)方法

:     

                   將請求轉發給服務器上另外一個Servlet,JSP

頁面,或者HTML文件      這個方法必須在響應被提交給客戶端之前

調用,否則拋出異常。     

                  方法調用後在響應中的沒有提交的內容被自動消

除。   

           include(ServletRequest,ServletResponse)方法

:    

                 用於在響應中包含其他資源(Servlet,JSP頁面或

HTML文件)的內容。     

                 即請求轉發後,原先的Servlet還可以繼續輸出響

應信息,轉發到的Servlet對請求做出的響應將併入原先Servlet的響

應對象中。     

      3,forward方法和include方法的區別:

                  forward方法調用後在響應中的沒有提交的內容

被自動消除。   include方法使原先的Servlet和轉發到的Servlet都

可以輸出響應信息。   

二,得到RequestDispatcher對象 

      三種方法可以得到RequestDispatcher對象:  

             1,利用ServletRequest接口中的

getRequestDispatcher(String  path)方法。  

             2,ServletContext接口中getNamedDispatcher

(String  path)和getRequestDispatcher(String  path)方法

     ServletRequest接口和ServletContext接口中

getRequestDispatcher方法區別:  

              1,參數的區別   

                      參數雖然都是資源路徑名,

ServletContext接口的中參數路徑必須以“/”開始,是相對於當前

Servlet上下文根,    ServletRequest接口中的參數路徑不僅可以

相對於當前Servlet上下文根,還可以相對與當前Servlet路徑    

             2,跨WEB應用程序訪問資源   

                      通過ServletContext.getContext()方

法獲取另個WEB應用程序的上下文環境對象來    調用

getRequestDispatcher(String  path)方法 將請求轉發到另個

WEB應用程序的資源。                      

                     還需要在當前WEB應用程序配置中設置

<context>元素,指定crossContext屬性值爲true。

三,ServletResqonse接口中的sendReadirect()方法和forward()方

法的區別 

       二個方法都是用於請求轉發的方法,轉發給另外的資源爲客戶

端服務。但二者有本質的區別

       sendReadirect()方法原理:  

              1,客戶端發送請求,Servlet1做出處理。  

              2,Servlet1調用sendReadirect()方法,將客戶端

的請求 重新定位 到Servlet2。  

              3,客戶端瀏覽器訪問Servlet2. 

              4,Servlet2對客戶端瀏覽器做出響應。

       forward()方法原理: 

             1,客戶端發送請求,Servlet1做出處理。 

             2,Servlet1調用sendReadirect()方法,將請求轉發

給Servlet2來處理請求,爲客戶端服務。  

             3,Servlet2對客戶端瀏覽器做出響應。     

      區別:  

           1,定位與轉發  

                    sendReadirect()方法是重新定位到另外一個

資源來處理請求,URL會重新定位,讓客戶端重新訪問另外一個資源。 

  forward()方法是轉發到另外一個資源來處理請求。URL不會變化。

隱藏了處理對象的變化。  

           2,處理請求的資源的範圍  

                  sendReadirect()方法可以跨WEB應用程序和服

務器重新定位資源來處理請求。    forward()方法只能在應用程序內

部轉發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章