1. 程式人生 > >Servlet & JSP 請求轉發

Servlet & JSP 請求轉發

1.介紹:

在現實應用中可能需要將請求轉發(forward)到其他資源。例如,對於一個登陸系統,如果使用者輸入了正確的使用者名稱和口令,servlet應該將請求轉發到歡迎頁面,否則應將請求轉發到登陸頁面或者錯誤頁面。

2.請求轉發器物件:

為實現請求轉發,需要通過請求物件request的getRequestDispatcher()方法得到RequestDispatcher物件,該物件稱為請求轉發器物件,格式如下:

RequestDispatcher getRequestDispatcher(String path)

注意:(1)引數path用來指定要轉發到的資源的路徑。

           (2)path以“/”開頭,是絕對路徑,它表示相對於當前應用程式的文件根目錄;

           (3)path不以“/”開頭,是相對路徑,它表示相對於當前資源所在的目錄;

2.ResquestDispatcher介面定義的兩個方法:

(1)public void forward(ServletRequest request, ServletResponse response):

將請求轉發到伺服器上的另一個動態或靜態資源(如Servlet、JSP頁面或者HTML頁面)。該方法只能在響應沒有被提交的前提下呼叫,否則丟擲IllegalStateException異常。

(2)public void include(ServletRequest request, ServletResponse response):

將控制轉發到指定的資源,並將其輸出包含到當前輸出中。這種控制的轉移是“暫時”的,目標資源執行完後,控制再轉回到當前資源接著處理請求完成服務。

3.注意:(1)請求物件是一個作用域(scope)物件;

              (2)使用請求物件儲存資料實現資料共享時,屬性名不能以java.、javax.、sun.和com.sun.開頭,它們是系統保留的名稱。建議屬性名用域的反轉名稱標識,如:com.demo.mydata。

請求轉發程式碼例項:

RequestDispatcher rd = request.getRequestDispatcher("/welcome.jsp");

rd.forward(request,response);