Chinaunix首页 | 论坛 | 博客
  • 博客访问: 269177
  • 博文数量: 82
  • 博客积分: 2477
  • 博客等级: 大尉
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-06 23:24
文章分类

全部博文(82)

文章存档

2013年(1)

2012年(3)

2011年(15)

2010年(36)

2009年(27)

分类: Java

2010-03-18 11:41:28

一、RequestDispatcher接口:

  定义:

  public interface RequestDispatcher;

  定义一个对象,从客户端接收请求,然后将它发给服务器的可用资源(例如Servlet、CGI、HTML文件、JSP文件)。Servlet引擎创建request dispatcher对象,用于封装由一个特定的URL定义的服务器资源。

  这个接口是专用于封装Servlet的,但是一个Servlet引擎可以创建request dispatcher对象用于封装任何类型的资源。

  request dispatcher对象是由Servlet引擎建立的,而不是由Servlet开发者建立的。

  方法

  1、forward

  public void forward(ServletRequest request, ServletReponse response)

  throws ServletException, IOException;

  被用来从这个Servlet向其它服务器资源传递请求。当一个Servlet对响应作了初步的处理,并要求其它的对象对此作出响应时,可以使用这个方法。

  当request对象被传递到目标对象时,请求的URL路径和其他路径参数会被调整为反映目标对象的目标URL路径。

  如果已经通过响应返回了一个ServletOutputStream对象或PrintWriter对象,这个方法将不能使用,否则,这个方法会抛出一个IllegalStateException。

  2、include

  public void include(ServletRequest request, ServletResponse response)

  throws ServletException, IOException

  用来包括发送给其他服务器资源的响应的内容。本质上来说,这个方法反映了服务器端的内容。

  请求对象传到目标对象后会反映调用请求的请求URL路径和路径信息。这个响应对象只能调用这个Servlet的ServletOutputStream对象和PrintWriter对象。

  一个调用include的Servlet不能设置头域,如果这个Servlet调用了必须设置头域的方法(例如cookie),这个方法将不能保证正常使用。作为一个Servlet开发者,你必须妥善地解决那些可能直接存储头域的方法。例如,即使你使用会话跟踪,为了保证session的正常工作,你必须在一个调用include的Servlet之外开始你的session

  二、Servlet接口。

  定义

  public interface Servlet

  这个接口定义了一个Servlet:一个在Web服务器上继承了这个功能的Java类。

  方法

  1、init

  public void init(ServletConfig config) throws ServletException;

  Servlet引擎会在Servlet实例化之后,置入服务之前精确地调用init方法。在调用service方法之前,init方法必须成功退出。

  如果init方法抛出一个ServletException,你不能将这个Servlet置入服务中,如果init方法在超时范围内没完成,我们也可以假定这个Servlet是不具备功能的,也不能置入服务中。

  2、service

  public void service(ServletRequest request, ServletResponse response)

  throws ServletException, IOException;

  Servlet引擎调用这个方法以允许Servlet响应请求。这个方法在Servlet未成功初始化之前无法调用。在Servlet被初始化之前,Servlet引擎能够封锁未决的请求。

  在一个Servlet对象被卸载后,直到一个新的Servelt被初始化,Servlet引擎不能调用这个方法

  3、destroy

  public void destroy();

  当一个Servlet被从服务中去除时,Servlet引擎调用这个方法。在这个对象的service方法所有线程未全部退出或者没被引擎认为发生超时操作时,destroy方法不能被调用。

  4、getServletConfig

  public ServletConfig getServletConfig();

  返回一个ServletConfig对象,作为一个Servlet的开发者,你应该通过init方法存储ServletConfig对象以便这个方法能返回这个对象。为了你的便利,GenericServlet在执行这个接口时,已经这样做了。

  5、getServletInfo

  public String getServletInfo();

  允许Servlet向主机的Servlet运行者提供有关它本身的信息。返回的字符串应该是纯文本格式而不应有任何标志(例如HTML,XML等)。

  三、ServletConfig接口

  定义

  public interface ServletConfig

  这个接口定义了一个对象,通过这个对象,Servlet引擎配置一个Servlet并且允许Servlet获得一个有关它的ServletContext接口的说明。每一个ServletConfig对象对应着一个唯一的Servlet。

  方法

  1、getInitParameter

  public String getInitParameter(String name);

  这个方法返回一个包含Servlet指定的初始化参数的String。如果这个参数不存在,返加空值。

  2、getInitParameterNames

  public Enumeration getInitParameterNames();

  这个方法返回一个列表String对象,该对象包括Servlet的所有初始化参数名。如果Servlet没有初始化参数,getInitParameterNames返回一个空的列表。

  3、getServletContext

  public ServletContext getServletContext();

  返回这个Servlet的ServletContext对象。

四、ServletContext接口

  定义

  public interface ServletContext

  定义了一个Servlet的环境对象,通过这个对象,Servlet引擎向Servlet提供环境信息。

  一个Servlet的环境对象必须至少与它所驻留的主机是一一对应的。在一个处理多个虚拟主机的Servlet引擎中(例如,使用了HTTP1.1的主机头域),每一个虚拟主机必须被视为一个单独的环境。此外,Servlet引擎还可以创建对应于一组Servlet的环境对象。

  方法

  1、getAttribute

  public Object getAttribute(String name);

  返回Servlet环境对象中指定的属性对象。如果该属性对象不存在,返回空值。这个方法允许访问有关这个Servlet引擎的在该接口的其他方法中尚未提供的附加信息。

  2、getAttributeNames

  public Enumeration getAttributeNames();

  返回一个Servlet环境对象中可用的属性名的列表。

  3、getContext

  public ServletContext getContext(String uripath);

  返回一个Servlet环境对象,这个对象包括了特定URI路径的Servlets和资源,如果该路径不存在,则返回一个空值。URI路径格式是/dir/dir/filename.ext。

  为了安全,如果通过这个方法访问一个受限制的Servlet的环境对象,会返回一个空值。

  4、getMajorVersion

  public int getMajorVersion();

  返回Servlet引擎支持的Servlet API的主版本号。例如对于2.1版,这个方法会返回一个整数2。

  5、getMinorVersion

  public int getMinorVersion();

  返回Servlet引擎支持的Servlet API的次版本号。例如对于2.1版,这个方法会返回一个整数2。

  6、getMimeType

  public String getMimeType(String file);

  返回指定文件的MIME类型,如果这种MIME类型未知,则返回一个空值。MIME类型是由Servlet引擎的配置决定的。

  7、getRealPath

  public String getRealPath(String path);

  一个符合URL路径格式的指定的虚拟路径的格式是:/dir/dir/filename.ext。用这个方法,可以返回与一个符合该格式的虚拟路径相对应的真实路径的String。这个真实路径的格式应该适合于运行这个Servlet引擎的计算机(包括其相应的路径解析器)。

  不管是什么原因,如果这一从虚拟路径转换成实际路径的过程不能执行,该方法将会返回一个空值。

  8、getResource

  public URL getResource(String uripath);

  返回一个URL对象,该对象反映位于给定的URL地址(格式:/dir/dir/filename.ext)的Servlet环境对象已知的资源。无论 URLStreamHandlers对于访问给定的环境是不是必须的,Servlet引擎都必须执行。如果给定的路径的Servlet环境没有已知的资源,该方法会返回一个空值。

  这个方法和java.lang.Class的getResource方法不完全相同。 java.lang.Class的getResource方法通过装载类来寻找资源。而这个方法允许服务器产生环境变量给任何资源的任何Servlet,而不必依赖于装载类、特定区域等等。

  9、getResourceAsStream

  public InputStream getResourceAsStream(String uripath);

  返回一个InputStream对象,该对象引用指定的URL的Servlet环境对象的内容。如果没找到Servlet环境变量,就会返回空值,URL路径应该具有这种格式:/dir/dir/filename.ext。

  这个方法是一个通过getResource方法获得URL对象的方便的途径。请注意,当你使用这个方法时,meta-information(例如内容长度、内容类型)会丢失。

  10、getRequestDispatcher

  public RequestDispatcher getRequestDispatcher(String uripath);

  如果这个指定的路径下能够找到活动的资源(例如一个Servlet,JSP页面,CGI等等)就返回一个特定URL的RequestDispatcher 对象,否则,就返回一个空值,Servlet引擎负责用一个request dispatcher对象封装目标路径。这个 request dispatcher对象可以用来完全请求的传送。

  11、getServerInfo

  public String getServerInfo();

  返回一个String对象,该对象至少包括Servlet引擎的名字和版本号。

阅读(991) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~