1. 两者的区别
重定向的特点:
- 重定向的跳转是由浏览器发起的,在这个过程中浏览器会发起两次请求;
- 重定向跳转可以跳转到任意服务器的资源,但是无法跳转到WEB-INF中的资源;
- 重定向跳转不能和request域对象一起使用;
- 重定向跳转浏览器的地址栏中的地址会变成跳转到的路径;
请求转发的特点:
- 请求转发的跳转是由服务器发起的,在这个过程中浏览器只会发起一次请求;
- 请求转发只能跳转到本项目的资源,但是可以跳转到WEB-INF中的资源;
- 请求转发可以和request域对象一起使用;
2. 重定向的使用
2.1 原生Selvlet重定向
点击查看代码
response.sendRedirect("url"); //推荐
//或者使用以下方法
response.setStatus(302);
response.setHeader("Location","http://www.baidu.com");
2.2 springmvc中实现
点击查看代码
return "redirect:/index"; //在使用RestController注解时,该方法只会返回字符串,可以用response.sendRedirect方法替换
3. 请求转发的使用
3.1 原生Servlet实现请求转发
点击查看代码
request.getRequestDispatcher(url).forward(request, response);
3.2 springmvc中实现
点击查看代码
@RequestMapping("/test")
public String toXXX(){
return "forward:/WEB-INF/templates/test.jsp" ;
}