先寫三個Servlet
@WebServlet("/a")
public class AServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("A -> B start");
req.getRequestDispatcher("/b").forward(req,resp);
System.out.println("A -> B end");
}
}
@WebServlet("/b")
public class BServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("B -> C start");
req.getRequestDispatcher("/c").forward(req,resp);
System.out.println("B -> C end");
}
}
@WebServlet("/c")
public class CServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("C start");
resp.getWriter().println("c");
System.out.println("C end");
}
}
A跳轉到B,B再跳轉到C,C生成響應
執行結果為
A -> B start
B -> C start
C start
C end
B -> C end
A -> B end
可以看到這個轉發和方法調用相似
轉發後面的代碼仍會執行