请求转发(Forward)和重定向(Redirect)的比较

类目

Forward(转发)

Redirect(重定向)

基本含义

转发是服务器行为:服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器;地址栏url不变

客户端行为:服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL

数据共享

转发页面和转发到的页面可以共享request里的数据

不共享数据

运用

一般用于用户登陆的时候,根据角色转发到相应的模块

一般用于用户注销登陆时返回主页面和跳转到其它的网站等

效率

具体过程

客户浏览器发送http请求—>web服务器接受此请求—>调用内部的一个方法在容器内部完成请求处理和转发动作—>将目标资源发送给客户;

转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。

客户浏览器发送http请求àweb服务器接受后发送302状态码响应及对应新的location给客户浏览器

à客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址

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

在这里 location可以重定向到任意URL,

请求次数

转发行为是浏览器只做了一次访问请求。

重定向行为是浏览器做了至少两次的访问请求的。

注意事项

执行了跳转页面,下面的代码就不会在执行了

转后必须加上return,不然会

执行跳转后面的语句

猜你喜欢

转载自blog.csdn.net/huaixiaozi90/article/details/79249139
今日推荐