学科分类
目录
Java Web

RequestDispatcher接口

当一个Web资源收到客户端的请求后,如果希望服务器通知另外一个资源去处理请求,这时,除了使用sendRedirect()方法实现请求重定向外,还可以通过RequestDispatcher接口的实例对象来实现。在ServletRequest接口中定义了两个获取RequestDispatcher对象的方法,如表1所示。

表1 获取RequestDispatcher对象的方法

方法声明 功能描述
getRequestDispatcher(String path) 返回封装了某个路径所指定资源的RequestDispatcher对象。其中,参数path必须以 “/”开头,用于表示当前Web应用的根目录。需要注意的是,WEB-INF目录中的内容对RequestDispatcher对象也是可见的,因此,传递给getRequestDispatcher(String path)方法的资源可以是WEB-INF目录中的文件
getNamedDispatcher(String name) 返回封装了某个Web资源的RequestDispatcher对象,传递给该方法的参数是在Web应用程序部署好的某个Web资源名称

获取到RequestDispatcher对象后,最重要的工作就是通知其它Web资源处理当前的Servlet请求,为此,在RequestDispatcher接口中,定义了两个相关方法,如表2所示。

表2 RequestDispatcher接口的方法

方法声明 功能描述
forward(ServletRequest request,ServletResponse response) 该方法用于将请求从一个Servlet传递给另外的一个Web资源。在Servlet中,可以对请求做一个初步处理,然后通过调用这个方法,将请求传递给其它资源进行响应。需要注意的是,该方法必须在响应提交给客户端之前被调用,否则将抛出IllegalStateException异常
include(ServletRequest request,ServletResponse response) 该方法用于将其它的资源作为当前响应内容包含进来

表2列举了RequestDispatcher的两个重要方法,其中,forward()方法可以实现请求转发,include()方法可以实现请求包含,关于请求转发和请求包含的相关知识,将在下面的小节中进行详细讲解。

点击此处
隐藏目录