先写三个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
可以看到这个转发和方法调用相似
转发后面的代码仍会执行