重定向:
客户端发送请求,web服务器接收该请求后发送302状态码响应并且发送新的一个地址(location)给客户端浏览器,客户端接收到302则自动再发送一个新的请求,而这个请求就是新的location,既然是客户端发送的一个请求,就对web容器的request没关系了,它可以任意跳转到所有location。
转发:
客户端浏览器发送http请求,web服务器接受此请求,调用内部的一个方法在容器内部完成请求处理和转发动作,然后将目标资源发送给客户。
重定向与转发的区别:
1.重定向访问服务器两次,转发只访问服务器一次。
2.重定向后地址栏会发生变化,转发动作都是在服务端完成的,客户端是不知道的,所以只能看见第一次访问的页面URL。
3.重定向跳转后必须加上return,要不然页面虽然跳转了,但是还会执行跳转后面的语句,转发是执行了跳转页面,下面的代码就不会在执行了。
4.在request级别使用信息共享,使用重定向必然出错。
5.重定向的地址可以是任意地址,转发的地址只能是当前应用类的某一个地址。