[Java][Web] Servlet中轉發和重定向比較

Servlet中頁面跳轉的兩種方式

請求轉發

使用requestDispatcher對象

request.getRequestDispatcher("path").forward(request, response);

使用JSP動做元素

<jsp:forward page="/">

請求重定向

使用response的sendRedirect方法

response.sendRedirect("path");

請求轉發與請求重定向的區別

  1. 轉發是在服務器內部完成,是服務器內部的跳轉;重定向是在客戶端完成,是客戶端的跳轉。
RequestDispatcher.forward方法在服務器內部請求轉發給另一個資源,瀏覽器只知道發出去了請求並獲得結果,但不知道請求在服務器內部的轉發。
HttpServletResponse.sendRedirect方法是服務端接收了客戶端的請求,並返回給客戶端結果,這個結果是告訴客戶端去請求另一個資源,而且當前會話關閉,所以客戶端會跳轉到另一個解面。
  1. 轉發地址欄不會改變;重定向地址欄會改變。
  2. 因爲轉發是在服務器內部進行的,所以轉發只能轉發給同一個WEB項目範圍內的資源;而重定向能夠指定任何地方。
  3. 因爲轉發是在服務器內部進行,轉發先後服務器內部共享同一個request和response對象;而重定向先後分別對應不一樣的request和response對象。
相關文章
相關標籤/搜索