请求转发和重定向

1. 两者的区别

重定向的特点:

  1. 重定向的跳转是由浏览器发起的,在这个过程中浏览器会发起两次请求;
  2. 重定向跳转可以跳转到任意服务器的资源,但是无法跳转到WEB-INF中的资源;
  3. 重定向跳转不能和request域对象一起使用;
  4. 重定向跳转浏览器的地址栏中的地址会变成跳转到的路径;

请求转发的特点:

  1. 请求转发的跳转是由服务器发起的,在这个过程中浏览器只会发起一次请求;
  2. 请求转发只能跳转到本项目的资源,但是可以跳转到WEB-INF中的资源;
  3. 请求转发可以和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" ;
}
posted @ 2022-09-08 09:48  时光巷陌  阅读(30)  评论(0编辑  收藏  举报