1.区别
1)转发是一次请求。因此浏览器地址栏上的地址不会发生变化,地址仍为第一次请求地址;重定向是两次请求。因此浏览器地址栏上的地址会发生变化,地址为第二次请求地址
2)转发的代码实现:request.getRequestDispatcher("/index").forward(request, response); 重定向的代码实现:response.sendRedirect("/webapproot/index")
3)转发是服务器内部资源跳转,由服务器来控制。不可实现跨域访问;重定向可以完成内部资源的跳转,也可以完成跨域跳转
4)转发的方式可以访问WEB-INF目录下受保护的资源;定向相当于浏览器重新发送了一次请求,在浏览器直接发送的请求是无法访问WEB-INF目录下受保护的资源
2.forward
Spring MVC中默认为转发的方式,一般转发到模板文件html上,使用forward可以转发到另一个Controller上
@RequestMapping("/a")
public String toA(){
return "forward:/b";
}
3.redirect
@RequestMapping("/a")
public String toA(){
return "redirect:/b";
}