Servlet API分别在两个包中,分别是javax.servlet和javax.servet.http。而最典型的Servlet 类则是在两个包中,中的常 用接口和类。在Servlet 架构中,Servlet接口是所有类型的Servlet 类必须实现的接口,而最典型的Servlet 类则是HttpServlet类。下面介绍Servlet常用类和接口。

1.Servlet接口

Servlet接口是所有Servet都必须直接或间接实现的接口。

Servlet接口包含的主要方法如下:

void init(ServletConfig config):初始化Servlet。

ServletConfng getServletConfig0):获得Servlet 的相关配置信息,该方法会返回一个指向ServletConfig的引用。

java.lang.Sring getServletInfo():获得Servlet开发者定义的信息。

void service(ServletRequet req, ServletResponse res); 该方法用于响应客户端请求。

void destroy():清理方法,用于释放资源等。

2.GenericServlet抽象类

有两个Servlet类: GenericServlet 和StpServlet类,它们提供了两种基本的Servlet,分别为Servlet方法提供了一种默认的实现模式。一般的, 我们编写的 Servlet类总是从这两种Servlet中继承.GenericServlet实现了Servlet 接口,它是一个抽象类,其包含的service()方法是一个抽象方法。GenericServlet 的派生类必须实现service()方法。

3. HttpServlet抽象类

HttpServlet是所有基于Web的Servlet类的根类。HttpServlet 类重写了Service()方法,并针对客户端的不同请求类型提供了几个不同的方法,如doGet(0方法、doPost(方法 。

HttpServlet包含的主要方法如下:

void doPost(HttpServletRequest request,HttpServletResponse response)  throws ServletException,java.io.IOException:该方法用于处理和响应HTTP GET请求。

void  doGet(HttpServletRequest request,  HttpServletResponse response)  throws ServletException, java io.IOException:该方法用于处理和响应HTTP POST请求。除了doGet()方法和doPost()方法以外,其他类型的HTTP请求如PUT、DELETE等也有对应的处理方法。编写HttpServlet 类的关键就是要对doGet()、doPost()等方法进行重写,以实现对客户端请求的响应。要注意的是,不要重写Service()方法,否则会有问题。

4. ServletRequest接口和ServletResponse接口

当客户请求到来时,Servlet容器会创建一个ServletRequest 对象用来封装请求数据了同时创建一个ServletResponse对象,用来封装响应数据。随后,这两个对象将作为service()方法的参数被传递Servlet, Servlet 可以利用ServletRequest 对象获取客户端的请求数据,利用SerletResponse对象发送最后的响应数据。ServletRequest接口和ServletResponse接口都在javax.servlet包中定义。

ServletRequest包含的主要方法如下:

Object getAttribute(String name):返回属性名为name的属性值,如果该属性不存在,则返回null。

Enumeration getAttributeNames():返回请求中所有属性的名字,如果请求中没有任何属性,则返回一个空枚举集合。

void removeAttribute(String name):  从请求中移除。

String getCharactrEncoding():返回请求正文所使用的字符编码名称。如果未指定字符编码,则该方法返回null.

int getContent Length():返回请求正文的长度,以字节为单位。如果长度未知,则该方法返回-1。

Strine getContentType():返回请求正文的MIME类型。如果类型未知,则该方法返回null。

ServletInputStream getInputStream():返回一个输入流,使用该输入流可以以二进制的方式来读取请求正文。

Sring getParamere(String name): 返回请求中name参数的值。如果name参数包含多个值,则该方法将返回参数值列表中的第一个参数值。若在请求中未找到该参数,则方法返回null。

Enumeration getParameterNamesO: 返回请求中包含的所有参数的名字。如果请求中没有参数,则该方法会返回一个空的枚举集合.

String getParameterValues(String name): 返回请求中请求中name参数的所有值。如果请求中不含有name参数,则该方法返回null。

ServletResponse包含的主要方法如下:

ServletOutputStream getOutputStream():返回一个ServletOutputStream对象,用来发送对客户端的请求。

PrintWrier getWriter():返回PrintWrier类对象,用来将字符文本发送到客户端。

void setContentLength(int length):设置响应数据的长度。

void setBufferSize(int size):设置发送到客户端的数据缓冲区大小。

5.HttpServletRequest接口

ServletRequest接口表示Servlet的请求,HttpServletRequest是它的子类,HttpServletRequest接口代表了客户端的HTTP请求。

HttpServletRequest包含的主要方法如下:

Cookie[] getCookies():返回由服务器存放在客户端的Cookie数组,常常使用Cookie来区分不同的客户。

HttpSession getSession():获取当前的HTTP会话对象。

HttpSession getSession(boolean create):获取当前的HTTP会话对象,若不存在则自动创建一个新会话.

6. HttpServletResponse接口

ServletResponse接口表示Servlet的响应,而HttpServletResponse接口表示对客户端的HTTP响应。

HttpServletResponse接口包含的主要方法如下:

public void addCookie (Cookie cookie):向响应的头部加入一个Cookie。

void setStatus(int status):将响应状态码设定为指定值,只用于不产生错误的响应。

7.  HttpSessien接口

HttpSession对象由Servlet容器负责创建,在HttpSession对象中可以存放客户状态信息。Servlet 会为HttpSession分配一个唯一标识符, 即Session ID。Session ID作为Cookie保存在客户的浏览器中,每当客户发出HTTP请求时,Servlet 容器就可以从HttpRequest对象中读取到Session ID,再根据Session ID找到相应的HttpSession对象,进而获取客户的状态信息。

HttpSession接日包含的主要方法如下:

String getld():返回Session的ID。

void invalidate():使当前的Session失效,Servlet 容器会释放掉HttpSession对象所占用的资源。

void setAttribute(String name,Object value): 将名值对(name, value)属性保存在HttpSession对象中。

Object getAttribute(String name):根据name参数返回保存在HttpSession对象中的属性值。

Enumeration getAttributeNames():返回当前HttpSession对象中所有的属性名。

isNew(): 判断该Session是否是新创建的,如果是新创建的Session,则返回true,否则返回false.