SpringMVC关于redirect和forward比较

本文探讨了SpringMVC中redirect和forward两种方法在处理控制器间跳转时的差异。redirect导致浏览器地址改变,适合重定向外部资源,但无法保留原始请求信息;forward则保持地址不变,适用于内部资源跳转,能保留请求内容,效率更高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在使用springMVC过程经常可能出现需要在一个controller处理完成之后根据情况发送至另一个controller继续处理的情况。这种情况下一般都会使用到如下两个关键字redirectforward

    首先,redirectforward都可以实现从一个controller跳转至另一个controller的功能,写法如下:

    redirect:/youPath?param1=key1&param2=key2...

    forward:/youPath?param1=key1&param2=key2...

    下面比较一下两者之间的差别:

    (1)redirect进行重定向后浏览器中输入地址框的地址会发生变化,模拟处理流程如下:

      

    (2)forward进行重定向后浏览器中输入地址框的地址是不会发生变化的,模拟处理流程如下:

    

    由上述分析可知,在进行重定向时使用redirect请求到达controller时request内容已经发生了变化不再是第一次访问时的request,因此如果希望在第二个controller处理时使用第一次请求的request就不能使用redirect而应该使用forward

(3)从上图分析可知:forward只能重定向到同一个项目的内部资源,而redirect可以重定向到外部资源。

(4)由于forward是类似于内不跳转操作而redirect需要回到浏览器再重新组织请求,因此从效率上来说forward高于redirect。而从范围上来说redirect要大于forward

因此,在forward满足业务功能需求时建议优先使用forward,只有在forward无法满足业务需求再使用redirect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值