SpringMVC框架中转发和重定向的实现及区别

在SpringMVC框架中,Controller层可以通过返回字符串来实现请求的转发与重定向。字符串带有'forward:'前缀表示转发,'redirect:'前缀则表示重定向。转发不会改变URL,而重定向会。重定向时,若需传递参数,可使用Session或RedirectAttributes。使用RedirectAttributes更安全,避免暴露敏感信息,且参数只在一次重定向中有效。
摘要由CSDN通过智能技术生成

在项目开发中使用springMVC框架时,当Controller控制层对请求进行处理完成后,向其它资源进行跳转时,可以使用请求转发与重定向来实现,如果根据所要跳转的资源类型来分,可以跳转到页面与跳转到其它处理器。

在之前学习servlet开发中,转发和重定向是由request对象和response对象完成的。

那么在SpringMVC框架中是如何完成的呢?

一般情况下,在SpringMVC框架开发中Controller控制层的方法返回字符串类型时会被当成逻辑视图名,然后根据视图解析器设置的拼接路径来返回视图。而如果返回的字符串中带forward或redirect前缀时,SpringMVC框架会将其后的字符串作为 URL地址来处理。

注意:在使用SpringMvc框架的转发和重定向时,它会自动跳过视图解析器,直接从项目的根目录中开始查找指定页面来返回。

SpringMVC中实现转发和重定向操作可以通过两种方式实现,一种是在学习servlet开发中的传统方式,另一种是SpringMVC框架提供的。

(1).以传统方式进行转发和重定向

下面的代码以跳转到index.jsp页面为例来看看如何实现转发与重定向。
请求转发的实现:
在这里插入图片描述
在使用forward进行转发时请求的URL链接是不会改变的。

下面是重定向操作,同样使用request对象向转发的路径传递参数时,无法获取参数值。
在这里插入图片描述
在使用redirect进行重定向时请求的URL链接地址发生了改变,并且在controller控制层中request对象传递的参数并不能成功传递到下一个请求地址。那么,如果想要在重定向时把请求参数也传递过去应该怎么做呢?

方法一:重定向之前把参数放进Session对象中
在这里插入图片描述
方法二:使用RedirectAttributes类
在这里插入图片描述
使用RedirectAttributes类来传递参数的话,需要在controller控制层的重定向的方法参数中添加RedirectAttributes类型的参数,然后把需要传递的参数放到RedirectAttributes类的addFlashAttribute方法中就可以。实际上RedirectAttributes本质上也是通过Session来实现的。

转发和重定向区别总结:
(1)相同点:都是web开发中资源跳转的方式。
(2)不同点:
转发是服务器内部行为,不会改变地址栏内容,可以使用request域来传递参数。
重定向是浏览器行为,会改变地址栏内容,不可以使用request作用域来传递参数,可以使用Session和RedirectAttributes来传递。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值