天天看點

Servlet重定向和請求轉發的差別

Servlet 請求轉發和重定向的差別

先看看怎麼實作的

// 1、容器内請求轉發
request.getRequestDispatcher("url").forward(request,response);

// 2、浏覽器重定向
response.sendRedirect("url");
           

共同點:

  1. 都可以産生頁面跳轉。

不同點:

  1. url的變化
    • 請求轉發不會發生 url 的改變。
    • 重定向的 url 會發生變化。
  2. 資料傳遞:
    • 請求轉發可以攜帶資料
    • 重定向不能攜帶資料
  3. 路徑問題:
    • 相對路徑:沒有差別
    • 絕對路徑:
      • 請求轉發是在容器内部進行轉發的。也就是說在目前web項目下,是以根目錄就是 目前項目 /index.jsp 或者 /servlet/LoginServlet 既可以。
      • 重定向是伺服器向浏覽器發送一個 response 響應,然後浏覽器重新請求伺服器,此時是來自伺服器外部的請求,根目錄就是目前伺服器的根目錄 webapp ,是以就要帶上 目前 module 的項目名稱 如:/webserviceModule/servlet/LoginServlet 或者 /webserviceModule/index.jsp

可以通過兩個示意圖來進行分析:

  1. 請求轉發示意圖:
    Servlet重定向和請求轉發的差別
  2. 浏覽器重定向示意圖:
    Servlet重定向和請求轉發的差別
    執行順序:1----->2 -----> 斷開連接配接 -----> 3 -----> 4。

繼續閱讀