详解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; 
    } 
} 

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

相关文章

  • Java事件监听机制讲解

    Java事件监听机制讲解

    今天小编就为大家分享一篇关于Java事件监听机制讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 详解SpringBoot中的index首页的访问、自定义Favicon图标

    详解SpringBoot中的index首页的访问、自定义Favicon图标

    这篇文章主要介绍了SpringBoot中的index首页的访问、自定义Favicon图标,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • MybatisPlus中@TableField注解的使用详解

    MybatisPlus中@TableField注解的使用详解

    这篇文章主要介绍了MybatisPlus中@TableField注解的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • JVM Metaspace内存溢出问题解决方案

    JVM Metaspace内存溢出问题解决方案

    这篇文章主要介绍了JVM Metaspace内存溢出排查总结过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Springboot如何获取上下文ApplicationContext

    Springboot如何获取上下文ApplicationContext

    这篇文章主要介绍了Springboot如何获取上下文ApplicationContext,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java通过反射创建对象并调用方法

    java通过反射创建对象并调用方法

    这篇文章主要介绍了java通过反射创建对象并调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 值得Java开发者关注的7款新工具

    值得Java开发者关注的7款新工具

    作为老牌语言Java,其生态圈也出来了一些有关云服务、监控、文档分享方面的工具,这篇文章主要介绍了Java开发者值得关注的7款新工具,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 集合框架(Collections Framework)详解及代码示例

    集合框架(Collections Framework)详解及代码示例

    这篇文章主要介绍了集合框架(Collections Framework)详解及代码示例,文章涉及集合数组的区别,collection接口,iterator迭代器,list接口及其用法,LinkedHashSet集合等有关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Springboot+Shiro+Mybatis+mysql实现权限安全认证的示例代码

    Springboot+Shiro+Mybatis+mysql实现权限安全认证的示例代码

    Shiro是Apache 的一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理,Shiro 主要分为两个部分就是认证和授权两部分,这篇文章主要介绍了Springboot+Shiro+Mybatis+mysql实现权限安全认证的示例代码,需要的朋友可以参考下
    2024-07-07
  • java科学计数法转换成数字的几种方法

    java科学计数法转换成数字的几种方法

    我们在处理大数值的时候,常常会遇到使用科学计数法表示的数字,科学计数法是一种表示大数值或小数值的方式,下面这篇文章主要给大家介绍了关于java科学计数法转换成数字的几种方法,需要的朋友可以参考下
    2024-03-03

最新评论