千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:贵阳千锋IT培训  >  技术干货  >  forward和redirect的区别?

forward和redirect的区别?

来源:千锋教育
发布人:xqq
时间: 2023-10-11 10:13:49

一、forward和redirect的概念

forward与redirect是servlet的两种主要的跳转方式。forward又叫转发,redirect叫做重定向。

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

在这里,转发的路径必须是同一个web容器下的URL,其不能转向到其他的web路径上去,中间传递的 是自己的容器内的request。在客户浏览器路径栏显示的仍然是其名列前茅次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。

重定向过程:客户浏览器发送http请求一一>web服务器接受后发送302状态码响及对应新的location给客户浏览器——>客户端浏览器发现是302状态码,会自动再发送一个新的http请求,请求url是新的location地址一一>服务器根据此请求寻找资源并发送给客户端浏览器。

在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器地址栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

二、forward和redirect区别

1. 从地址栏显示来说   

forward是服务器内部的重定向,服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。

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

所以redirect等于客户端向服务器端发出两次request,同时也接受两次response;而forword只有一次请求。

2. 从数据共享来说

forward:forward方法只能在同一个Web应用程序内的资源之间转发请求,是服务器内部的一种操作。由于在整个定向的过程中用的是同一个request,因此forward会将request的信息带到被重定向的jsp或者servlet中使用,所以可以共享数据。

redirect:redirect是服务器通知客户端,让客户端重新发起请求。redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。所以不能共享数据。

3. 从应用场景来说

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

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

4. 从效率来说

forward:效率高。

redirect:效率低.

5. 从本质来说

forword转发是服务器上的行为,而redirect重定向是客户端的行为。

以上就是关于forward和redirect的知识希望对大家有帮助。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

su和login root 有哪些区别?

2023-10-11

PHP与Java有哪些区别?

2023-10-11

art和dalvik的区别?

2023-10-11

最新文章NEW

asic和fpga的区别?

2023-10-11

eclipse各个版本之间的区别?

2023-10-11

网关和路由器的区别?

2023-10-11

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>