本文主要总结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) 设置响应的状态编码

Servlet API遍程常用接口和类的更多相关文章

  1. JDBC常用接口、类介绍

    JDBC常用接口.类介绍 JDBC提供对独立于数据库统一的API,用以执行SQL命令.API常用的类.接口如下: DriverManager 管理JDBC驱动的服务类,主要通过它获取Connectio ...

  2. JDBC 学习笔记(三)—— JDBC 常用接口和类,JDBC 编程步骤

    1. JDBC 常用接口和类 DriverManager 负责管理 JDBC 驱动的服务类,程序中主要的功能是获取连接数据库的 Connection 对象. Connection 代表一个数据库连接对 ...

  3. Spring常用接口和类

    一.ApplicationContextAware接口 当一个类需要获取ApplicationContext实例时,可以让该类实现ApplicationContextAware接口.代码展示如下: p ...

  4. IT兄弟连 JavaWeb教程 Servlet API

    Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类. Servlet可以使用javax.servlet和javax.servlet.http包创建 ...

  5. Servlet基本用法(二)接口和类

    一.摘要 本文主要简单介绍开发Servlet需要用到的接口和类. 二.ServletRequest和ServletResponse接口 当客户请求到来时,由容器创建一个ServletRequest对象 ...

  6. Servlet基本用法二接口和类

    转自:http://www.cnblogs.com/xujian2014/p/4536168.html 一.摘要 本文主要简单介绍开发Servlet需要用到的接口和类. 二.ServletReques ...

  7. Struts2学习笔记(五)——Action访问Servlet API

    在Strut2中访问Servlet API有三种方式: 1.通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API. 步骤: 1 ...

  8. 配置Struts2及Struts2访问servlet api的方式

    Struts2的起源与背景 在很长的一段时间内,在所有的MVC框架中,Struts1处于绝对的统治地位,无论是从市场的普及范围,还是具体的使用者数量. 其他MVC框架都无 法与其相比,作为一一款优秀的 ...

  9. Struts2中获取servlet API的几种方式

    struts2是一个全新的MVC框架,如今被广大的企业和开发者所使用,它的功能非常强大.这给我们在使用servlet 纯java代码写项目的时候带来了福音.但是一般来说,我们的项目不到一定规模并不需要 ...

随机推荐

  1. 清除SQL数据库的日志

    ALTER DATABASE [Fuliu_Test] SET RECOVERY SIMPLEALTER DATABASE [Fuliu_Test] SET RECOVERY FULLDBCC SHR ...

  2. 论文第5章:Android绘图平台的实现

    面向移动设备的矢量绘图平台设计与实现 Design and Implementation of Mobile Device-oriented Vector Drawing Platform 引用本论文 ...

  3. [转]VS2005/2008过期之后简单实用的升级方法

    网络上有不少key,但是用了之后没效果,发现了一个好方法可以解决.  把\vs\setup\下面的 setup.sdb文件用文本编辑器打开,然后改动其最后的一行([Product Key] 下面的一行 ...

  4. andriod手机签到应用服务器设计

    最近导师要求我和另一个同学开发一个手机上课签到应用,我负责客户端和服务器之间的通信架构编写和数据的存储 本人大学四年只用过汇编和C/C++,因此对andriod开发还是一窍不通,花了一个星期写出来了基 ...

  5. overflow:hidden的另一层含义

    overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是 很了解.一提到清除浮动,我们就会想到另外一个CSS样式 ...

  6. Laravel在不同的环境调用不同的配置文件

    Laravel在不同的环境调用不同的配置文件   Laravel如何在不同的环境调用不同的配置文件?社区这个问题问的蛮多,如何优雅的方法实现呢,应该有好多方法吧,我一般习惯用两种方法,设置环境变量,或 ...

  7. Python - 多版本共存与虚拟独立环境

    背景 利用pip直接在本地python环境安装包,基本上都安装到了site_package目录下面. 随着安装的包越来越多,依赖关系也就越来越复杂.不同的项目之间,依赖关系也会出现版本冲突的问题. 此 ...

  8. 实用手册:130+ 提高开发效率的 vim 常用命令

    Vim 是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器.这里收录了130+程 ...

  9. IconVault – 创建自定义图标字体的神器推荐

    图标字体简单来说就是外观呈现为图标的字体,同时具有矢量图形的特征,在不同的设备上使用图标的时候就不用加载不同尺寸的图片文件,能够减少 HTTP 请求数,提高页面加载速度. IconVault 这款在线 ...

  10. IE11之F12 Developer Tools--控制台工具(Console)

    前面我们介绍了IE11的Developer Tools中的第一个工具--DOM Explorer,这篇文章介绍第二个工具--控制台(Console),使用控制台工具查看错误和其他信息.发送调试输出.检 ...