请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include
生活随笔
收集整理的這篇文章主要介紹了
请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當一個 Web資源 收到客戶端的請求后,如果希望服務器通知另一個web資源處理請求,那么這時可以通過 RequestDispatcher 接口的實例對象實現。
web資源分為靜態和動態
靜態web資源是瀏覽器能夠直接打開的。如:html、css、 js等
動態web資源是經過翻譯之后瀏覽器能夠打開的。如:jsp、servlet、php、ASP等
RequestDispatcher對象
RequestDispatcher getRequestDispatcher (String path)
參數:path必須以/開頭,用于表示當前 Web 應用的根目錄
web應用的根目錄在idea中是web;在eclipse中是webcontent
需要注意的是,WEB-INF目錄中的內容對 RequestDispatcher 對象也是可見的。因此,傳遞給 getRequestDispatcher(String path) 方法的資源可以是 WEB-INF 目錄中的文件
返回值:某條路徑所指定資源的 RequestDispatcher 對象
獲取到 RequestDispatcher對象后,便是通知其他 Web 資源處理當前的 Servlet 請求,為此,RequestDispatcher 接口定義了兩個相關方法:forward()、include()
forward()與include()
| forward(ServletRequest request, ServletResponse response) | 第一個web資源對請求做一個初步處理,然后通過調用這個方法,將請求傳遞給其他資源進行響應。需要注意的是,該方法必須在響應提交給客戶端之前被調用,否則將拋出 IllegalStateException 異常 |
| include(ServletRequest request, ervletResponse response) | 該方法用于將其他的資源作為當前響應內容包含進來 |
| 使用場合不同 | 將控制權轉移到其它組件 | 須由另一組件執行部分處理,一旦執行完畢,當前組件將收回控制權 |
| 輸出結果不同 | 在請求轉發之前,web組件不應使用輸出流向客戶端發送消息 | 所有web組件共享同一個輸出流與客戶機進行通信 |
| 相同點 | 均是在服務器端完成的,因此地址欄中只顯示原URL,不顯示跳轉后的URL | 均是在服務器端完成的,因此地址欄中只顯示原URL,不顯示跳轉后的URL |
動手練一下吧!
關于requset的forward()、include()跳轉的實例代碼
參考文章:
總結
以上是生活随笔為你收集整理的请求的转发:RequestDispatcher对象处理请求的两个方法--forward和include的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决问题:EnvironmentLoca
- 下一篇: 代码实例--请求的转发:RequestD