Java EE javax.servlet中的RequestDispatcher接口
RequestDispatcher接口
public interface RequestDispatcher
一、介绍
定义一个对象,从客户端接收请求并将其发送到服务器上的任何资源(例如servlet,HTML文件或JSP文件)。
servlet容器创建RequestDispatcher对象,该对象用作位于特定路径或特定名称的服务器资源的包装。
此接口旨在包装servlet,但servlet容器可以创建RequestDispatcher对象以包装任何类型的资源。
获取此对象的方法:
- ServletContext.getRequestDispatcher(java.lang.String)
- ServletContext.getNamedDispatcher(java.lang.String)
- ServletRequest.getRequestDispatcher(java.lang.String)
二、属性
好多属性,关于URI,关于path
三、方法
1、void forward(ServletRequest request,ServletResponse response) throws ServletException, IOException
将来自servlet的请求转发到服务器上的另一个资源(servlet,JSP文件或HTML文件)。此方法允许一个servlet对请求和另一个资源进行初步处理以生成响应。
对于通过getRequestDispatcher()获取的RequestDispatcher,ServletRequest对象将其路径元素和参数调整为匹配目标资源的路径。
forward()应在响应提交给客户端之前调用(在响应正文输出刷新之前)。如果响应已被提交,则此方法将引发IllegalStateException。在转发之前,响应缓冲区中未提交的输出会自动清除。
请求和响应参数必须与传递给调用Servlet的service方法的对象相同,或者是包装它们的ServletRequestWrapper或ServletResponseWrapper类的子类。
此方法将给定请求的调度程序类型设置为DispatcherType.FORWARD。
2、void include(ServletRequest request, ServletResponse response) throws ServletException, IOException
在响应中包含资源 (servlet、JSP 页、HTML 文件) 的内容。实质上, 此方法启用编程服务器端包含。
ServletResponse 对象的路径元素和参数与调用者。包含的 servlet 不能更改响应状态代码或设置标头; 否则为任何进行更改的尝试都将被忽略。
请求和响应参数必须与传递给调用 servlet 的服务方法的对象相同, 或者是包装它们的 ServletRequestWrapper 或 ServletResponseWrapper 类的子类别。
此方法将给定request的调度器类型设置为 DispatcherType. INCLUDE。