Servlet中頁面跳轉的兩種方式
請求轉發
使用requestDispatcher對象
request.getRequestDispatcher("path").forward(request, response);
使用JSP動做元素
<jsp:forward page="/">
請求重定向
使用response的sendRedirect方法
response.sendRedirect("path");
請求轉發與請求重定向的區別
- 轉發是在服務器內部完成,是服務器內部的跳轉;重定向是在客戶端完成,是客戶端的跳轉。
RequestDispatcher.forward方法在服務器內部請求轉發給另一個資源,瀏覽器只知道發出去了請求並獲得結果,但不知道請求在服務器內部的轉發。
HttpServletResponse.sendRedirect方法是服務端接收了客戶端的請求,並返回給客戶端結果,這個結果是告訴客戶端去請求另一個資源,而且當前會話關閉,所以客戶端會跳轉到另一個解面。
- 轉發地址欄不會改變;重定向地址欄會改變。
- 因爲轉發是在服務器內部進行的,所以轉發只能轉發給同一個WEB項目範圍內的資源;而重定向能夠指定任何地方。
- 因爲轉發是在服務器內部進行,轉發先後服務器內部共享同一個request和response對象;而重定向先後分別對應不一樣的request和response對象。