Servlet中请求的重定向与转发
1.请求的转发
过程示意图:

代码:request和ServletContext中都可以得到 RequestDispatcher 对象,拿到对象之后forward就可以转发请求。
req.getRequestDispatcher("/demo").forward(req,resp);
// this.getServletContext().getRequestDispatcher("/demo").forward(req,resp);
2.请求的重定向
过程示意图:

本质(底层逻辑):
// resp.sendRedirect("/mycontext/getMsg");
//改为如下两行代码后依然实现了重定向的效果
resp.setHeader("Location","/mycontext/getMsg");
resp.setStatus(302);
代码: 重定向时要写注意目标请求的请求全路径
//重定向 resp.sendRedirect("/mycontext/getMsg");
3.比较
共同点:都能实现页面的跳转
不同点:转发请求url不会发生变化,重定向url会发生变化
浙公网安备 33010602011771号