转发与重定向

  • 转发:request.getRequstDispatcher(“xxx.jsp”).forward(request, response);
  • 重定向:response.sendRedirect(“xxx.jsp”);

转发

  1. 客户端(浏览器)发送http请求
  2. 服务器(web容器/Tomcat)接受请求

    1. 调用内部方法在容器内部完成请求处理和转发动作

    2. 将目标资源发送给客户

      • Ps:

        1. 转发的路径必须是同一个web容器下的URL,不能转向到其他的web路径上去,中间传递的是自己容器内的request
        2. 客户端(浏览器)路径栏显示的仍然是第一次访问的路径,也就是说客户感觉不到服务器做了转发。
        3. 转发行为是浏览器只做了一次访问请求
      • 传输的信息不会丢失

重定向

  1. 客户端(浏览器)发送http请求

  2. web服务器接受后发送302状态码响应 以及 对应新的location给客户端

  3. 客户端接受到302状态码,自动再发送一个新的http请求,请求的URL是新的location地址

  4. 服务器根据请求寻找资源并发送给客户。

    • PS:

      1. 这里的location可以重定向到**任意**URL,既然是客户端(浏览器)重新发送出了请求,也就没有request传递的概念了

      2. 在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化

      3. 重定向行为浏览器至少做了两次访问请求
        • 重定向过程中,传输的信息会被丢失
类比解释

假设你去办理某个执照,

转发:你先去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来。

重定向:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去了B局。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值