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. 請求轉發示意圖:

  2. 瀏覽器重定向示意圖:

    執行順序:1----->2 -----> 斷開連接 -----> 3 -----> 4。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章