浏览器向服务器发送请求,ATestServlet
接收请求后,使用重定向/转发两种方式向BTestServlet
进行资源跳转
ATestServlet.java
@WebServlet(name = "ATestServlet", urlPatterns = "/chap3red_for_a")public class ATestServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 设置request范围内的共享变量request.setAttribute("user", "admin");// 重定向至 BTestServletresponse.sendRedirect("/webpro/chap3red_for_b");// 转发至 BTestServletrequest.getRequestDispatcher("/chap3red_for_b").forward(request, response);}}
BTestServlet.java
@WebServlet(name = "BTestServlet", urlPatterns = "/chap3red_for_b")public class BTestServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Object obj = request.getAttribute("user");System.out.println("user = " + obj);}}
代码的运行流程图
response重定向
request转发
理解重定向与转发
重定向:张三找李四借钱,李四没钱,所以让张三找王五借钱,张三从王五那借到了钱。张三很感激王五
转发:张三找李四借钱,李四没钱,李四就找王五借钱,并把借来的钱又借给了张三。张三很感激李四
张三相当于浏览器的请求,而李四、王五相当于处理请求的web资源
重定向与转发的对比
参考内容:
【动力节点】Servlet__老杜