細談getRequestDispatcher()與sendRedirect()的區別


問題?細談getRequestDispatcher()與sendRedirect()的區別

 

首先我們要知道:

(1)request.getRequestDispatcher()是請求轉發,前后頁面共享一個request ; 這個是在服務端運行的,對瀏覽器來說是透明的。
(2)response.sendRedirect()是重新定向,前后頁面不是一個request。而這個是在瀏覽器端運行的。

      1) redirect 方式
   response.sendRedirect("/a.jsp");
   頁面的路徑是相對路徑。sendRedirect可以將頁面跳轉到任何頁面,不一定局限於本web應用中,如:
   response.sendRedirect("URL");
   跳轉后瀏覽器地址欄變化。
   這種方式要傳值出去的話,只能在url中帶parameter或者放在session中,無法使用request.setAttribute來 傳遞。所以該方式只適用於無傳值跳轉
  2) forward方式
   request.getRequestDispatcher("/路徑(可以是jsp路徑也可以是servlet)") .forward(request, response);

如:

request.getRequestDispatcher("/2.jsp)") .forward(request, response);

request.getRequestDispatcher("/servlet/HomeServlet)") .forward(request, response);
  Servlet頁面跳轉的路徑是相對路徑。forward方式只能跳轉到本web應用中的頁面上。
  跳轉后瀏覽器地址欄不會變化。
  使用這種方式跳轉,傳值可以使用三種方法:url中帶parameter,session,request.setAttribute

 

用這個方法,可以將系統中的重定向問題  再次的沖跳轉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM