request与dispatcher
今天复习过去学javaee的时候,突然想起以前老师说过什么转发与重定向,所以特意看了一下资料,为了避免以后忘记了,特意写在博客,加深一下记忆
区别一:地址栏
转发后的地址还是原来的地址,而重定向则是新的地址
区别二:请求次数
转发只发出一个请求,而重定向则发出了两个请求
转发:
发送请求--->服务器动运行--->进行请求的重新设置,例如通过request.setAttribute(name,value)--->根据转发的地址,获取该地址的网页-->响应请求给浏览器。
重定向:
发送请求--->服务器--->响应请求,返回给浏览器一个新的地址与响应码--->浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给浏览器,请求地址为之前返回的地址--->服务器运行 --->响应请求给浏览器
区别三:
重定向的网址可以是任何网址
转发的网址必须是本站点的网址
如:重定向--以前的request中存放的变量全部失效,并进入一个新的request作用域
转发:以前的request中存放的变量会失效,就像把两个页面拼到一起。
转发还有一个好处就是隐藏转发的地址,因为他只显示原来的地址,这样,就可以直接跳转到web-inf目录中的页面了