Servlet API遍程常用接口和类

本文主要总结Servlet  API遍程常用接口和类

Servlet API

http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html

Sun公司提供了javax.servlet.http 和javax.servlet两个扩展包来开发Servlet。这两个包属于Java的标准扩展Servlet API。

javax.servlet包提供了控制Servlet生命周期所必需的Servlet接口。

javax.servlet.http包提供了从Servlet接口派生出的专门用于处理HTTP请求的抽象类和一般的工具类。

Servlet接口和类的继承关系

Servlet程序必须实现javax.servlet.Servlet接口。该接口定义了Servlet容器与Servlet程序之间的通信协议。为了简化Servlet程序的编写,API中也提供了一个实现Servlet接口的GenericServlet类,这个类实现了Servlet程序的基本特征和功能。

HttpServlet类是Servlet API提供的一个专用于HTTP协议的类, 该类是GenericServlet类的子类,在GenericServlet类的基础上进行了一些针对HTTP特点的扩充。

开发基于Servlet类的应用必须继承GenericServlet类或HttpServlet类。为了充分利用HTTP协议的功能,一般情况下,都将自己编写的Servlet作为HttpServlet类的子类。而HttpServlet类是一个抽象类,开发者必须在自己定义的继承类中实现HttpServlet类的所有方法。

Servlet接口

javax.servlet.Servlet是所有Servlet的基础接口

方 法 原 型 含 义
destroy() 当Servlet被清除时,Web容器调用这个方法。Servlet 可使用这个方法完成如断开和数据库的连接等操作。
getServletConfig() 该方法返回ServletConfig对象,该对象可以使Servlet和Web容器进行通信,例如传递初始变量
getServletInfo() 返回有关Servlet的基本信息,如编程人员姓名和时间等
init(ServletConfig arg0) 该方法在Servlet初始化时被调用,在Servlet生命周期中,这个方法仅会被调用一次,它可以用来设置一些准 备工作,例如设置数据库连接、读取Servlet设置信息 等,它也可以通过ServletConfig对象获得Web容器通 过的初始化变量
service(ServletRequestarg0, ServletResponse arg1) 该方法用来处理Web请求、产生Web响应的主要方法, 它可以对ServletRequest和ServletResponse对象进行操作

ServletConfig接口

javax.servlet.ServletConfig接口是一个由Servlet容器使用的Servlet配置对象,用于在Servlet初始化时向它传递信息。

方 法 原 型 含 义
getInitParameter(String arg0) 根据初始化变量名称返回其字符串值
getInitParameterNames() 返回所有初始化变量的枚举Enumeration对象,可以用来查询
getServletContext() 返回ServletContext对象,Java的getXxx()方法大多返回原对象,而不是对象拷贝
getServletName() 返回当前Servlet的名称,该名称在web.xml里指定

GenericServlet类

javax.servlet.GenericServlet类提供了对Servlet接口的基本实现。

方 法 原 型 含 义
destroy() Servlet容器使用这个方法结束Servlet服务
getInitParameter(String arg0) 根据变量名称查找并返回初始变量值
getInitParameterNames() 返回初始变量的枚举对象
getServletConfig() 返回ServletConfig对象
getServletContext() 返回ServletContext对象
getServletInfo() 返回关于Servlet的信息,如作者、版本、版权等
getServletName() 返回Servlet的名称
init() 代替super.init(config)的方法
init(ServletConfig arg0) Servlet容器使用这个指示Servlet已经被初始化为服务状态
log(String arg0, Throwable arg1) 这个方法用来向Web容器的log目录输出运行记录,一般文件名称为Web程序的servlet名称
log(String arg0) 这个方法用来向Web容器的log目录输出运行纪录和弹出的运行错误信息
service(ServletRequest arg0, ServletRe- sponse arg1) 由Servlet容器调用,使Servlet对请求进行响应

init()方法

public void init() throws ServletException

Servlet第一次被请求加载时,服务器创建一个Servlet对象,这个对象调用init()方法完成必要的初始化工作。该方法在执行时,Servlet会把一个ServletConfig类型的对象传递给init()方法,这个对象就被保存在Servlet对象中,直到Servlet对象被销毁。

服务器只调用一次init()方法,以后的客户再请求Servlet服务时,Web服务器将启动一个线程,在该线程中,Servlet调用service()方法响应客户的请求,除非它要重载这个Servlet。在重载某个Servlet之前,服务器必须先调用destroy()方法卸载这个Servlet。

缺省的init()方法设置了Servlet的初始化参数,并用它的ServletConfig对象参数来启动配置,所以,通常不必覆盖init()方法。但是,在个别情况下也可以用自己编写的init()方法来覆盖它。例如,可以编写一个init()方法用于一次装入GIF图像,也可以编写一个init()方法初始化数据库连接。

同时需要注意,所有覆盖init()方法的Servlet应调用super.init()方法,以确保仍然执行这些任务。此外,在调用service()方法之前,应确保已完成了init()方法。

service()方法

public abstract void service(ServletRequest req,

ServletResponse res)

throws ServletException,

java.io.IOException

service()方法是Servlet的核心。每当客户请求一个Servlet 对象时,该对象的service()方法就被调用,而且传递给service()方法一个“请求”对象和一个“响应” 对象作为参数。

service()方法根据请求的类型调用相应的服务功能,缺省的服务功能是调用与HTTP请求的方法相应的do功能。例如,当客户通过HTML 表单发出一个HTTP GET请求时,则缺省情况下就调用doGet()方法;当客户发出的是一个HTTP POST请求时,就调用doPost()方法。

destroy()方法

public void destroy()

destroy()方法仅执行一次,即在服务器停止且卸载Servlet 时执行该方法。缺省的destroy()方法通常是符合要求的。也可以覆盖destroy()方法。

例如,如果Servlet在运行时要累计统计数据,则可以编写一个destroy()方法,该方法用于在未装载Servlet时将统计数字保存在文件中,也可以编写一个destroy()方法关闭数据库连接等。

HttpServlet类

javax.servlet.http.HttpServlet类通过执行Servlet接口,能够提供HTTP协议的功能。

方 法 原 型 含 义
doDelete(HttpServletRequest arg0, HttpServletResponse arg1) 对应HTTP DELETE请求从服务器删除文件
doGet(HttpServletRequest arg0, HttpServletResponse arg1) 对应HTTP GET请求,客户向服务器请求数据,通过URL附加发送数据
doHead(HttpServletRequest arg0, HttpServletResponse arg1) 对应HTTP HEAD请求从服务器要求数据,和GET不同的是并不是返回HTTP数据体
doOptions(HttpServletRequest arg0, HttpServletResponse arg1) 对应HTTP OPTION请求,客户查询服务器支持什么方法
doPost(HttpServletRequest arg0, HttpServletResponse arg1) 对应HTTP POST请求,客户向服务器发送数据,请求数据
doPut(HttpServletRequest arg0, HttpServletResponse arg1) 对应HTTP PUT请求,客户向服务器上传数据或文件
doTrace(HttpServletRequest arg0, HttpServletResponse arg1) 对应HTTP TRACE请求,用来调试Web程序
getLastModified(HttpServletRequest arg0) 返回HttpServletRequest最后被更改的时间,以ms为单位,从1970/01/01计起

doGet()方法

protected void doGet(HttpServletRequest req,

HttpServletResponse resp)

throws ServletException,

java.io.IOException

被这个类的service()方法调用,用来处理一个HTTP GET操作。这个操作允许客户端简单地从HTTP服务器“获得”资源。对这个方法的重载将自动地支持HEAD方法。

当一个客户通过HTML表单发出一个HTTP GET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不需修改服务器端的数据时,应该使用doGet()方法。

doPost()方法

protected void doPost(HttpServletRequest req,

HttpServletResponse resp)

throws ServletException,

java.io.IOException

被这个类的service()方法调用,用来处理一个HTTP POST操作。这个操作包含请求体的数据。当开发者要处理POST操作时,必须在HttpServlet的子类中重载这一方法。

当一个客户通过HTML 表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。

HttpServletRequest接口

javax.servlet.http.HttpServletRequest接口代表了对客户端发出的HTTP请求。

方 法 原 型 含 义
getAuthType() 返回Servlet使用的安全机制名称
getContextPath() 返回请求URI的Context部分,实际是URI中指定Web程序的部分,例如URI为http://localhost:8080/mingrisoft/index.jsp,这一方法返回的是“mingrisoft”
getCookies() 返回客户发过来的Cookie对象
getDateHeader(String arg0) 返回客户请求中的时间属性
getHeader(String arg0) 根据名称返回客户请求中对应的头信息
getHeaderNames() 返回客户请求中所有的头信息名称
getHeaders(String arg0) 返回客户请求中特定头信息的值
getIntHeader(String arg0) 以int格式根据名称返回客户请求中对应的头信息(header),如果不能转换成int格式,生成一个NumberFormatException异常
getMethod() 返回客户请求的方法名称,例如:GET、POST或PUT
getPathInfo() 返回客户请求URL的路径信息
方 法 原 型 含 义
getPathTranslated() 返回URL中在Servlet名称之后、检索字符串之前的路径信息
getQueryString() 返回URL中检索的字符串
getRemoteUser() 返回用户名称,主要应用在servlet安全机制中检查用户是否已经登录
getRequestURI() 返回客户请求使用的URI路径,是URI中的host名称和端口号之后的部分,例如URL为http://localhost:8080/mingrisoft/index.jsp,这一方法返回的是“/index.jsp”
getRequestURL() 返回客户Web请求的URL路径
getServletPath() 返回URL中对应servlet名称的部分
getSession() 返回当前会话期间对象
getUserPrincipal() 返回java.security.Principal对象,包括当前登录用户名称
isRequestedSessionIdFromCookie() 当前session ID是否来自一个cookie
isRequestedSessionIdFromURL() 当前session ID是否来自URL的一部分
isRequestedSessionIdValid() 当前用户期间是否有效
isUserInRole(String arg0) 已经登录的用户是否属于特定角色

HttpServletResponse接口

javax.servlet.http.HttpServletResponse接口代表了对客户端的HTTP响应。

方 法 原 型 含 义
addCookie(Cookie arg0) 在响应中加入cookie对象
addDateHeader(String arg0, long arg1) 加入对应名称的日期头信息
addHeader(String arg0, String arg1) 加入对应名称的字符串头信息
addIntHeader(String arg0, int arg1) 加入对应名称的int属性
containsHeader(String arg0) 对应名称的头信息是否已经被设置
encodeRedirectURL(String arg0) 对特定的URL进行加密,在sendRedirect()方法中使用
encodeURL(String arg0) 对特定的URL进行加密,如果浏览器不支持cookie,同时加入session ID
sendError(int arg0) throws IOException 使用特定的错误代码向客户传递出错响应
sendError(int arg0, String arg1) throws IOException 使用特定的错误代码向客户传递出错响应,同时清空缓冲器
sendRedirect(String arg0) throws IOException 传递临时相应,相应的地址根据location指定
setHeader(String arg0, String arg1) 设置指定名称的头信息
setIntHeader(String arg0, int arg1) 设置指定名称头信息,其值为int数据
setStatus(int arg0) 设置响应的状态编码
posted @ 2016-05-15 22:05  wuyudong  阅读(1391)  评论(0编辑  收藏  举报
Top_arrow