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.