区别一:
重定向时浏览器上的网址改变
转发是浏览器上的网址不变
forward 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然
后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中
还是原来的地址。
redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器
会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取。
区别二:
重定向实际上产生了两次请求
转发只有一次请求
重定向图解:(向客户端发出两次request请求)
发送请求 -->服务器运行-->响应请求,返回给浏览器一个新的地址与响应码-->浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给服务器,请求地址为之前返回的地址-->服务器运行-->响应请求给浏览器
转发图解:(只向服务器发出一次请求)
发送请求 -->服务器运行-->进行请求的重新设置,例如通过request.setAttribute(name,value)-->根据转发的地址,获取该地址的网页-->响应请求给浏览器
区别三:
重定向时的网址可以是任何网址
转发的网址必须是本站点的网址