是一个Web资源的包装器,可以用来把当前的Request传递给该资源,或者把新的资源包括到当前的相应中。详细来说:RequestDispatch对象从客户端获取请求request,并把他们传递到服务器上的servlet、html、jsp。
有两个方法,include()/forward()
void forward(ServletRequest request,ServletResponse response)
// 1. 跳转到指定的页面“dealWith.jsp”; String url = "dealWith.jsp"; RequestDispatcher requestDispatcher = request.getRequestDispatcher(url); // 2. 执行跳转,将参数request和response传递给这个页面 requestDispatcher.forward(request, response);
1)作用:该方法将相应定向到参数location指定的新的URL。
2)location:可以是绝对地址,也可以是相对URL。
本质 | 地址栏显示 | 数据共享 | 运用地方 | 效率 | 工作流程 | |
forward | 服务器请求资源,服务器直接访问目标地址的URL,读取该URL的相应内容,然后把这些内容再发给服务器 | 不变(转发路径必须是同一个web容器下的URL) | 转发页面和转发到的页面可以共享request里面的数据. | 一般用于用户登陆的时候,根据角色转发到相应的模块. |
高 |
一次请求 |
sendRedirect | 客户端行为,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址 | 新的URL(Location可以是任意地址) | 不能共享 | 一般用于用户注销登陆时返回主页面和跳转到其它的网站等. | 低 | 至少两次请求 |
原文:http://www.cnblogs.com/lesleysbw/p/6246546.html