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);