Java Servlet中的轉發和重定向是兩種實現不同目的的方法。兩種方法都可以在服務器端控制頁面的跳轉,但是它們的實現方式和使用場合是有所不同的。
轉發(forward)
Servlet中的轉發是指將請求發送給另一個Servlet或JSP頁面處理,被請求的Servlet或JSP頁面將原始請求的所有信息(包括請求參數)都保持不變地傳遞給下一個Servlet或JSP頁面。它可以通過調用RequestDispatcher接口中的forward()方法來實現。
下面是一個示例代碼,說明如何在Servlet中實現轉發:
RequestDispatcher dispatcher = request.getRequestDispatcher("nextPage.jsp"); dispatcher.forward(request, response);
在這個例子中,第一行獲取了調用轉發Servlet的請求的RequestDispatcher對象,它被用于將請求轉發到下一個頁面(nextPage.jsp)。第二行的forward()方法將請求的控制轉移到 nextpage.jsp頁面。請注意,forward()方法的參數是request對象和response對象,它們代表了原始請求的請求和響應信息。
重定向(redirect)
另一方面,重定向是時將處理從當前Servlet或JSP頁面移動到新的位置。實際上,重定向創建一個新的請求,對于新請求,服務器將檢查地址并向客戶端發送“302”狀態碼和新地址。客戶端瀏覽器將關閉原始請求,并開啟一個新的請求到新的位置,這就使得原始請求的所有信息都丟失了。通常,重定向是在用戶提交表單后執行的,它能夠避免用戶在重新加載頁面時多次提交表單。它可以通過HttpServletResponse接口中的sendRedirect()方法實現。
下面是一個示例代碼,說明如何在Servlet中實現重定向:
response.sendRedirect("http://www.example.com");
在這個例子中,sendRedirect()方法將請求重定向到 http://www.example.com 這個網址。它會立即關閉當前請求,并在瀏覽器中打開新的請求。