URL重定向的特点:
1):浏览器地址栏路径发送变化
2):只发送了两个请求.
3):因为是不同的请求,所以不能共享请求中的数据.
4):可以跨域访问资源.
请求转发的特点:
1):浏览器地址栏路径没变
2):只发送了一个请求.
3):共享同一个请求,在请求敏感词享数据.
4):只能访问当前应用中的资源,不能跨域跳转.
请求转发和URL重定向的选择?
1:若需要共享请求中的数据,只能使用请求转发.
2:若需要访问WEB-INF中的资源,只能使用请求转发.
3:若需要跨域访问,只能使用URL重定向.
4:请求转发可能造成表单的重复提交问题.
5:其他时候,任选.
l forward和redirect的区别
转发过程:客户浏览器发送http请求——》web服务器接受此请求——》调用内部的一个方法在容器内部完成请求处理和转发动作——》将目标 第一次,客户端request?? A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。
重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。
举个通俗的例子:
直接转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A”;
间接转发就相当于:"A找B借钱,B说没有,让A去找C借"。
sendRedirect()方***创建一个新的请求,而forward()方法只是把请求转发到一个新的目标上。重定向(redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forwarding)以后,之前请求作用域范围以内的对象还是能访问的。一般认为sendRedirect()比forward()要慢。