Servlet 請求轉發和重定向的差別
先看看怎麼實作的
// 1、容器内請求轉發
request.getRequestDispatcher("url").forward(request,response);
// 2、浏覽器重定向
response.sendRedirect("url");
共同點:
- 都可以産生頁面跳轉。
不同點:
- url的變化
- 請求轉發不會發生 url 的改變。
- 重定向的 url 會發生變化。
- 資料傳遞:
- 請求轉發可以攜帶資料
- 重定向不能攜帶資料
- 路徑問題:
- 相對路徑:沒有差別
- 絕對路徑:
- 請求轉發是在容器内部進行轉發的。也就是說在目前web項目下,是以根目錄就是 目前項目 /index.jsp 或者 /servlet/LoginServlet 既可以。
- 重定向是伺服器向浏覽器發送一個 response 響應,然後浏覽器重新請求伺服器,此時是來自伺服器外部的請求,根目錄就是目前伺服器的根目錄 webapp ,是以就要帶上 目前 module 的項目名稱 如:/webserviceModule/servlet/LoginServlet 或者 /webserviceModule/index.jsp
可以通過兩個示意圖來進行分析:
- 請求轉發示意圖:
- 浏覽器重定向示意圖: 執行順序:1----->2 -----> 斷開連接配接 -----> 3 -----> 4。