详解spring mvc 请求转发和重定向

 更新时间:2017年02月21日 16:46:59   作者:双斜杠少年  
这篇文章主要介绍了详解spring mvc 请求转发和重定向,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

请求重定向与请求转发的比较,HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有很大的区别。

1.RequestDispatcher.forward方法只能将请求转发给同一个Web应用中的组件,HttpServletResponse.sendRedirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序的资源,甚至是使用绝对URL重定向到其他站点的资源。对于sendRedirect如果传递的URL以”/”开头,他是相对于整个Web站点的根目录;对于forward如果传递的URL以”/”开头,它是相对于当前Web应用程序的根目录。

2.sendRedirect对浏览器做出的响应是重新发出对另外一个URL的访问请求,forward在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果

3.forward的调用者与被调用者之间共享相同的request对象和response对象,他们属于同一个访问请求和响应过程;sendRedirect的调用者与被调用者使用各自的request和response对象,属于两个独立的访问请求和响应过程

请求重定向以redirect:开头,请求转发以forward:开头;

样例如下:

@RequestMapping(value="/users")
@Controller
public class UserController {

  @RequestMapping(value="/queryuser",method = RequestMethod.GET)
  public String queryuser(Model model) throws Exception {
    return "forward:/users/uc";
  }

  @RequestMapping(value="/uc",method = RequestMethod.GET)
  public String quer(Model model) throws Exception {

    return "redirect:/#/home";
  }

   @RequestMapping(value = "/save", method = RequestMethod.GET) 
    public ModelAndView saveUser(HttpServletRequest request, HttpServletResponse response) throws Exception { 
      ModelAndView mv = new ModelAndView("forward:/users/uc");//默认为forward模式 
//    ModelAndView mv = new ModelAndView("redirect:/#/home");//redirect模式 
      return mv; 
    } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • cookie+mybatis+servlet实现免登录时长两天半的整体流程

    cookie+mybatis+servlet实现免登录时长两天半的整体流程

    这篇文章主要介绍了cookie+mybatis+servlet实现免登录时长两天半,主要用到的技术有session、cookie、转发、重定向、filter、和servlet,最重要的还是具体的来运用它们在前端页面真正的搭建出一个应用,通过这个练习,对我们所学的web知识做一个整合,需要的朋友可以参考下
    2022-10-10
  • Java NIO实例UDP发送接收数据代码分享

    Java NIO实例UDP发送接收数据代码分享

    这篇文章主要介绍了Java NIO实例UDP发送接收数据代码分享,分享了客户端和服务端完整代码,小编觉得还是挺不错的,共需要的朋友参考。
    2017-11-11
  • Spring中@RequestParam、@RequestBody和@PathVariable的用法详解

    Spring中@RequestParam、@RequestBody和@PathVariable的用法详解

    这篇文章主要介绍了Spring中@RequestParam、@RequestBody和@PathVariable的用法详解,后端使用集合来接受参数,灵活性较好,如果url中没有对参数赋key值,后端在接收时,会根据参数值的类型附,赋一个初始key,需要的朋友可以参考下
    2024-01-01
  • SpringBoot2.0 整合 SpringSecurity 框架实现用户权限安全管理方法

    SpringBoot2.0 整合 SpringSecurity 框架实现用户权限安全管理方法

    Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。这篇文章主要介绍了SpringBoot2.0 整合 SpringSecurity 框架,实现用户权限安全管理 ,需要的朋友可以参考下
    2019-07-07
  • 为spring get请求添加自定义的参数处理操作(如下划线转驼峰)

    为spring get请求添加自定义的参数处理操作(如下划线转驼峰)

    这篇文章主要介绍了为spring get请求添加自定义的参数处理操作(如下划线转驼峰),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java中的五种引用类型详解

    Java中的五种引用类型详解

    Java中的五种引用类型:强引用、软引用、弱引用、虚引用和Final引用,分别用于管理对象的生命周期,帮助垃圾回收器更高效地回收不再使用的对象
    2024-12-12
  • 归并排序的实现代码与思路

    归并排序的实现代码与思路

    归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
    2013-03-03
  • 关于mybatis传入参数一直为null的问题

    关于mybatis传入参数一直为null的问题

    这篇文章主要介绍了关于mybatis传入参数一直为null的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 关于SSM框架下各层的解释说明(Controller等)

    关于SSM框架下各层的解释说明(Controller等)

    这篇文章主要介绍了关于SSM框架下各层的解释说明(Controller等),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 使用ServletInputStream()输入流读取图片方式

    使用ServletInputStream()输入流读取图片方式

    这篇文章主要介绍了使用ServletInputStream()输入流读取图片方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论