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。

 

 

 

原文地址:https://www.cnblogs.com/bigbigbigo/p/8843509.html