SpringMvc-转发视图/重定向视图/thymeleaf

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、转发与重定向的区别

转载文章,原文地址:http://www.2cto.com/kf/201107/97118.html

区别一:

重定向时 浏览器 上的网址改变
  转发是浏览器上的网址不变
区别二:
  重定向实际上产生了两次请求
转发只有一次请求
重定向:
  发送请求 -->服务器运行–>响应请求,返回给浏览器一个新的地址与响应码–>浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给服务器,请求地址为之前返回的地址–>服务器运行–>响应请求给浏览器
转发:
  发送请求 -->服务器运行–>进行请求的重新设置,例如通过request.setAttribute(name,value)–>根据转发的地址,获取该地址的网页–>响应请求给浏览器
区别三:
  重定向时的网址可以是任何网址
  转发的网址必须是本站点的网址

二、转发视图

index页面传入url代码

<a th:href="@{/test/forward}">测试forward</a><br>

控制层代码

SpringMVC中默认的转发视图时InternalResourceView(祥见testforward)
SpringMVC中创建转发视图的情况;
当控制器方法中设置的视图名称以“forward:”为前缀时,创建InternalResourceView视图,此时的视图名称不会被SpringMVC
配置文件中所配置的视图解析器解析,而是会将前缀forward:去掉,剩余部分作为最终路径通过转发实现跳转
(因为当前工程使用了ThymeleafView;所以并不会太多的使用这个方法,因为使用它的时候不会被ThymeleafView;渲染)

@RequestMapping("/test/forward")
    public String testForward(){
        return "forward:/test/Model";
    }

转发到的方法;

  @RequestMapping("/test/Model")
    public String TestMAVbyModel(Model model){
        System.out.println(model.getClass().getName());
        //输出org.springframework.validation.support.BindingAwareModelMap
        model.addAttribute("testModel","hello,Model");
        return "success";
    }

三、ThymeleafView

因为在这个工程下。我们在Spring.xml文件中设置了

<bean id="viewResolver"class="org.thymeleaf.spring5.view.ThymeleafViewResolver"/>

所以当控制器方法中所设置的视图名称没有任何前缀时,此时的视图名称会被SpringMVC配置文件中所配置的视图解析器解析
视图名称拼接视图前缀和视图后缀所得到的最终路径,会通过转发方式实现跳转

四、重定向视图

index页面传入url代码

<a th:href="@{/test/redirect}">测试redirect</a><br>

控制层代码

SpringMVC中默认的重定向视图是RedirectView(祥见testforward)
当控制器方法中设置的视图名称以“redirect:”为前缀时,创建视图RedirectView,此时的视图名称不会被SpringMVC
配置文件中所配置的视图解析器解析,而是会将前缀redirect:去掉,剩余部分作为最终路径通过重定向的方式实现跳转
在业务处理的时候,一般失败用转发,成功用重定向
例如;用户登录,失败用转发,成功用重定向

 @RequestMapping("/test/redirect")
    public String testRedirect(){
        return "redirect:/test/Model";
    }

转发到的方法;

  @RequestMapping("/test/Model")
    public String TestMAVbyModel(Model model){
        System.out.println(model.getClass().getName());
        //输出org.springframework.validation.support.BindingAwareModelMap
        model.addAttribute("testModel","hello,Model");
        return "success";
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值