转发的特点
1.一次请求
2.地址不变
3.一个请求只有一个request,A和B可以通过它共享数据
4.只能转发到项目内部的资源
(1)什么是转发
一个web组件(servlet/jsp)将未完成的处理交给
另外一个web组件继续做。
比如,一个servlet将处理结果转发给一个jsp来展现。
(2)如何转发
step1,绑订数据到request上。
request.setAttribute(String name,Object obj);
注:
依据绑订名获得绑订值。
Object request.getAttribute(String name);
step2,获得转发器
RequestDispatcher rd =
request.getRequestDispatcher(String uri);
uri:转发的地址。
step3,转发
rd.forward(request,response);
(3)转发的特点
a,转发之后,浏览器地址栏的地址不变。
b, 转发地址有限制(必须是同一个应用)。
重定向的特点
1.二次请求
2.地址改变
3.两个请求有两个request,A和B无法通过它共享数据
4.可以重定向到项目外部的资源
(1)什么是重定向?
服务器通知浏览器向一个新的地址发送请求。一般服务器可以发送一个302状态码和一个Location
消息头(值是一个地址,一般称之为重定向地址),
浏览器收到之后,会立即向重定向地址发请求。
(2)如何重定向?
response.sendRedirect(String url);
(3)重定向之前,服务器会先清空response对象上
缓存的数据。
(4)特点
a,重定向之后,浏览器地址栏的地址会变。
b,重定向地址是任意的。
建议:
-查询时用转发
-增加,修改,删除后重定向到查询
比较转发与重定向
(1)转发所涉及的各个web组件可以共享同一个
request对象,重定向不可以。
注:
容器收到请求之后,会创建request对象和
response对象,当响应发送完毕,容器会立即
删除request对象和response对象。
也就是说,request对象和response对象的
生存时间是一次请求和响应期间。
重定向是两次请求。
(2)重定向之后,浏览器地址栏的地址会变;转发
不变。
(3)重定向地址是任意的,而转发地址必须是同一个
应用。
(4)转发是一件事未完成,而重定向是一件事已经完成。