Java中的轉載和重定向都是用于網頁跳轉的,但它們起到的作用卻有區別。
轉載(Forward)指的是在同一臺服務器上,從當前的Servlet到另一個Servlet跳轉,請求和響應對象都是相同的,最終的響應結果也是原來的響應結果。
RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet2"); dispatcher.forward(request, response);
重定向(Redirect)則是在客戶端和服務器之間進行的,在進行重定向時,當前的Servlet向客戶端發送302狀態碼,通知客戶端進行跳轉,此時客戶端向指定的Servlet發起請求,請求對象和響應對象都是全新的。因此,重定向可以跳轉到服務器以外的頁面。
response.sendRedirect("/servlet2");
在使用轉載時,相當于在服務器內部再次發送了請求并獲取了響應結果,所以轉載的方式可以獲得之前請求所保存的信息,比如屬性、會話數據等。通過轉載方式,在JSP和Servlet之間可以傳遞請求和響應對象。
相比之下,重定向可以使用更多的響應包含選項,并且不會受到轉載時的多個Servlet訪問和管理的數據的影響,所以對于無法在同一應用程序上下文中定位資源的請求,重定向是一個更好的選擇。