API对象的说明
这一部分包含了对Java Servlet API的全部类和接口的具体说明。这个说明与Javadoc API差不多,但是这份文档提供了更多的信息。
API包含了两个软件包,十二个接口和九个类。
软件包:javax.servlet
所包含的接口:RequestDispatcher;Servlet;ServletConfig;ServletContext;ServletRequest;ServletResponse;SingleThreadModel。
所包含的类:GenericServlet;ServletInputStream;ServletOutputStream;ServletException;UnavailableException。
一、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引擎调用这个方法。