請求重定向與請求轉發的比較:
重定向是兩次請求(sendRedirect)
請求轉發是一次請求(RequestDispatcher.forward)它能夠訪問web-inf下的jsp文件
<% 2 request.getRequestDispatcher("/WEB-INF/qq.jsp").forward(request, response); 3 %>
HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法均可以讓瀏覽器得到另一個URL所指向的資源,但二者的內部運行機制有很大的區別。
1.RequestDispatcher.forward方法只能將請求轉發給同一個Web應用中的組件,HttpServletResponse.sendRedirect不只能夠重定向到當前應用程序的其餘資源,還能夠重定向到痛一個站點上的其餘應用程序的資源,甚至是使用絕對URL重定向到其餘站點的資源。
對於sendRedirect若是傳遞的URL以"/"開頭,他是相對於整個Web站點的根目錄;對於forward若是傳遞的URL以"/"開頭,它是相對於當前Web應用程序的根目錄。
2.sendRedirect對瀏覽器作出的響應是從新發出對另一個URL的訪問請求,forward在服務器端內部將請求轉發給另一個資源,瀏覽器只知道發出了請求並獲得了響應結果
3.forward的調用者與被調用者之間共享相同的request對象和response對象,他們屬於同一個訪問請求和響應過程;sendRedirect的調用者與被調用者使用各自的request和response對象,屬於兩個獨立的訪問請求和響應過程。
web