Servlet: 重定向和转发
1 重定向的概述
(1)重定向的概念
首先客户浏览器发送http请求,当web服务器接受后发送302状态码响应及对应新的location给客 户浏览器,客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location 地址,服务器根据此请求寻找资源并发送给客户。
(2)重定向的实现
实现重定向需要借助javax.servlet.http.HttpServletResponse接口中的以下方法:
方法声明 | 功能介绍 |
void sendRedirect(String location) | 使用指定的重定向位置URL,向客户端发送临时重定向响 应 |
(3)重定向的原理
( 4 ) 重定向的特点
重定向之后,浏览器地址栏的URL会发生改变
重定向过程中会将前面Request对象销毁,然后创建一个新的Request对象
重定向的URL可以是其它项目工程
2 转发的概述
(1)转发的概念
一个Web组件(Servlet/JSP)将未完成的处理通过容器转交给另外一个Web组件继续处理,转发 的各个组件会共享Request和Response对象
(2)转发的实现
绑定数据到Request对象
方法声明 | 功能介绍 |
Object getAttribute(String name) | 将指定属性值作为对象返回,若给定名称属性不存 在,则返回空值 |
void setAttribute(String name,Object o) | 在此请求中存储属性值 |
获取转发器对象
方法声明 | 功能介绍 |
RequestDispatcher getRequestDispatcher(String path) | 返回一个RequestDispatcher对象,该对象充当位 于给定路径上的资源的包装器 |
转发操作
方法声明 | 功能介绍 |
void forward(ServletRequest request, ServletResponse response) | 将请求从一个servlet转发到服务器上的另一个资 源(Servlet、JSP文件或HTML文件) |
(3)转发的特点
转发之后浏览器地址栏的URL不会发生改变
转发过程中共享Request对象
转发的URL不可以是其它项目工程
(4) 重定向和转发的比较