请求转发(forward) 与 重定向(Redirect)的区别

请求转发(forward):request对象下的方法

    request.getRequestDispatcher(path).forward(request, response);

重定向(Redirect):response

    response.sendRedirect(path);


本质区别: 

1、请求的转发(forward)只发出了一次请求, 由浏览器发出一个quest到对应的Servlet中,在处理完成后,转发到别的Serlvet或者页面中继续处理,最后将这次的响应信息发给浏览器

2、重定向(Redirect)则发出了两次请求. 

    1)由浏览器发出一个quest到对应的Servlet中,在处理完成后,将这次的信息响应给浏览器。

    2)浏览器在接收到这次的响应后,按照响应提供的路径(path)再向该方向发起第二次Servlet重新处理。处理完成后,重新响  应给浏览器

forward的原理图:


Redirect的原理图:


具体区别:

①. 请求的转发: 地址栏是初次发出请求的地址.
     请求的重定向: 地址栏为最后响应的那个地址 
       
②. 请求转发: 在最终的 Servlet 中, request 对象和中转的那个 request 是同一个对象. 
     请求的重定向: 在最终的 Servlet 中, request 对象和中转的那个 request 不是同一个对象.       
   
③. 请求的转发: 只能转发给当前 WEB 应用的的资源
     请求的重定向: 可以重定向到任何资源. 
       
④. 请求的转发: / 代表的是当前 WEB 应用的根目录
     请求的重定向: / 代表的是当前 WEB 站点的根目录. 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值