RequestDispatcher 代表的是请求的派发者。
有2个动作:forward 和 include 。客户端对于任何一个请求,可以根据业务逻辑,选择不同的处理办法:
1、请求的是谁,谁就自己处理并响应,当请求的是一个html页面,则web浏览器显示HTML的内容。
2、使用RequestDispatcher可以让其它的资源参与进来,协同完成的响应,这是RequestDispatcher的主要作用。
RequestDispatcher 的特点,就是浏览器上显示的URL是最先请求的目标资源的URL,不会因为使用forward、include方法改变。因此forward和include的调用对于用户来说是透明的
RequestDispatcher 实质是一个接口
有两个方法,也就是两个动作
public interface RequestDispatcher
{
public void forward(ServletRequest request, ServletResponse response)
throws ServletException, IOException;
public void include(ServletRequest request, ServletResponse response)
throws ServletException, IOException;
}
一,RequestDispatcher.forward(request, response)这个方法将请求从一个 Servlet 或者 JSP目标资源上转发到服务器上的另一个资源(servlet,JSP文件或 HTML文件,资源必须是当前Web上下文中的),并让其它的资源去生成响应数据。
例如当用户请求的是目标资源A,A接受到请求后,转发到B,真正产生响应数据是被转发的资源B,而A只是起个引导转发作用。浏览器的地址栏不会变,依然是A的URL。
二,RequestDispatcher.include(request, response)调用者指定一个被包含的资源,将这个包含的资源(JSP,Servlet,HTML)的响应数据包含到自己的响应体中。被包含的数据是在服务器上经过运行产生的,因此是动态包含,而不同于JSP中的include指令,它是JSP转译期的静态包含