Servlet应用中重定向与请求转发的区别

来源:互联网 发布:博雅软件怎么用 编辑:程序博客网 时间:2024/05/22 07:52
  • 首先重定向和请求转发的区别在大多数面试题里面会考到,这篇文章是总结一下个人的理解。本文不讲代码

第一,我们要明白这两个东西的作用。Servlet在对客户端请求的数据处理完成后,会向客户端返回相应的响应结果(Servlet办事儿)。


关于重定向


含义:重定向是指由原请求地址重新定位到某个新地址,原有的请求失效,客户端看到的是新的请求返回的相应结果。

打个比喻:一个老板(客户端)想干一件事儿,便把这件事儿传给下面的经理(服务器),经理把这件事儿交给员工A(ServletA),员工A有事儿,但员工A知道员工B(ServletB)能够胜任这件事儿(也可以外包出去,外包出去的话相当于利用应用程序中的其他资源),便对经理说员工B能干这件事儿,经理再反馈给老板,老板在对经理说,事儿不大你看着办吧,办好就行。经理再传到员工B那儿去,员工B干完了,然后再依次反馈到上级。

从上面,我们知道了这件事儿包含了两次请求传递,并且老板也知道是员工B完成了这件事儿,因此客户端浏览器上的地址为员工B的名字,即转发的地址栏发生改变。


关于请求转发


含义:请求转发是指将请求再转发到其他地址,转发过程中使用的是同一个请求,转发的地址栏内容不变。

打个比喻:一个老板(客户端)想干一件事儿,便把这件事儿传给下面的经理(服务器),经理把这件事儿交给员工A(ServletA),但是呢员工A不能胜任,但是也不想放弃这次千载难逢的机会,员工A便狐假虎威让员工B把这件事儿干了,员工B干完了,反馈给了经理(这时的经理马虎大意了,还以为是员工A完成了这个项目),经理再反馈到老板

从上面,我们知道了这件事儿只包含了一次请求传递,并且由于经理的马虎大意使老板知道是员工A完成了这件事儿,因此客户端浏览器上的地址为员工A的名字,即转发的地址栏不变。


总结


我们要知道的区别:

1.请求次数不一样
2.响应之后,地址栏是否发生改变
3.重定向的响应结果可以“外包”出去;请求转发的相应结果只能靠同一个WEB应用中的组件(一个公司里面的员工)
4.重定向对浏览器的请求直接作出响应,响应结果是告诉老板找另外一个员工完成项目(让浏览器去重新发出对另外一个URL的访问请求);请求转发中老板并不知道是谁完成了该项目(浏览器只知道发出请求和得到相应结果,并不知道服务器内部发生了转换行为)

阅读全文
1 0
原创粉丝点击