转发和重定向
相同点
都是 web 开发中资源跳转的形式。
不同点
转发:是服务器外部的跳转,浏览器的地址栏不会发生变化。从一个页面到另一个页面的跳转还是同一个申请,也即是只有一个申请响应。能够通过 request 域来传递对象。
重定向:是浏览器主动发动对跳转指标的申请,浏览器的地址栏会发生变化。从一个页面到另一个页面的跳转是不同的申请,也即是有两个或两个以上的不同的申请的响应。无奈通过 request 域来传递对象。
在 SpringMVC 中实现转发和重定向
(1)在 SpringMVC 中依然以传统形式进行转发和重定向
上面的代码中 login.jsp 就是跳转后的页面
转发:
requst.getRequestDispatcher("login.jsp").forword(request,response);
重定向:
response.sendRedirect("login.jsp");
(2)SpringMVC 提供了便捷的转发和重定向的形式
// 转发
@RequestMapping("/forward")
public String forword(){return "forward:/index.jsp";}
// 重定向
@RequestMapping("redirect")
public String redirect(){return "redirect:/index.jsp";}