SpringMVC中请求转发和请求重定向的区别详解

本文对比了请求转发和请求重定向的区别,解释了它们的工作机制:请求转发保持URL不变,由服务器内部资源协同处理;请求重定向则需客户端重新发起,地址栏URL改变。通过实例代码演示了如何在Spring MVC中实现这两种技术。

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

1、什么是请求转发?

    请求转发,是一种服务器的行为,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保存,地址栏中的 URL 地址不会改变,得到响应后,服务器端再将响应发送给客户端,从始至终只有一个请求发出。实现方式如下,达到多个资源协同响应的效果:

 /**
     * 请求转发,使用的是InternalResourceView
     * @return 目标页
     */
    @RequestMapping("/testInternalResourceView")
    public String testInternalResourceView(){
        return "forward:/testSuccess";
    }

    图解如下:A Servlet指向B Servlet来处理A Servlet的部分工作,并将结果返回给客户端。

 地址栏的地址不会发生变化:

       

2、什么是请求重定向? 

    请求重定向是客户端的行为。一个web资源(服务器)收到客户端请求后,在某些情况下,对于客户端的请求,可能当次访问的Servlet无法完成全部的工作,需要将部分工作交给另一个Servlet来处理该请求。请求重定向会让客户端重新发起一个新的请求,所以对于客户端而言,客户端需要发送两次请求。通知浏览器去访问另外一个web资源,称之为请求重定向。 

 /**
     * 请求重定向,使用的是redirectView
     * @return 目标控制器方法
     */
    @RequestMapping("/testRedirectView")
    public String testRedirectView(){
        return "redirect:/testSuccess";
    }

 图解如下:

当发起请求到当前的Servlet时,服务器通知浏览器需要重新定向一个新的Servlet,因此浏览器的地址栏发生了变化: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值