请求转发与重定向的区别

请求转发(Forward)和重定向(Redirect)之间区别与联系 一个比喻: 小张向小李发送一次请求,想让他完成某项工作,当小李接受到请求时,发现自己完成不了,又请求小王帮忙,小王接收到小李请求之

请求转发(Forward)和重定向(Redirect)之间区别 与联系 一个比喻: 小张向小李发送一次请求,想让他完成某项工作,当小李接受到请求时,发现自 己完成不了,又请求小王帮忙,小王接收到小李请求之后最终完成了该项工作,并把 最后的结果交给了小张。这个过程就是请求转发,在此期间,小张只发送了一次请 求,他只知道把任务交给了小李,至于小李是如何完成的,小张并不知道,他只等待最 终的结果。 重定向则不同,首先小张向小李发送请求,想让他完成某项工作,当小李接收到 这个请求时,发现自己完成不了,他立即通知小张,并推荐小王可以完成任务,于是小 张又联系小王,最终小王完成了该项任务。 区别: 1、浏览器地址栏显示不同(表面区别) 无论进行多少次请求,如果使用请求转发来实现,浏览器地址栏中只显示第一 次发送请求的地址;如果使用重定向来实现,浏览器地址栏显示的是每次请求的新地 址。这只是表面上看到的不同地方。 2、组件之间可否共享信息不同(本质区别) 从本质上讲,请求转发时,从发送第一次到最后一次请求的过程中,WEB容器只 创建一次request和response对象,请求之间始终共享这两个对象,所以每个请求 可以访问他之前请求中的参数和属性的值;而重定向时,浏览器每发送一次请求, WEB容器都会重新创建新的request和response对象,所以请求之间不能共享信 息,即不能在请求中访问到他之前请求中的参数和属性的值。

腾讯文库请求转发与重定向的区别