本文主要总结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. tips javascript(一)

    tips javascript(一) 实现type函数用于识别标准类型和内置对象类型,语法如下: var t = type(obj); function type(o){    if (o === n ...

  2. iOS性能优化之内存管理:Analyze、Leaks、Allocations的使用和案例代码

    最近接了个小任务,和公司的iOS小伙伴们分享下instruments的具体使用,于是有了这篇博客...性能优化是一个很大的话题,这里讨论的主要是内存泄露部分. 一. 一些相关概念 很多人应该比较了解这 ...

  3. 高级四则运算器—结对项目总结(193 &105)

    高级四则运算器—结对项目总结 为了将感想与项目经验体会分割一下,特在此新开一篇博文. 界面设计 啥都不说,先上图震慑一下... 上面的三个界面是我们本次结对项目的主界面,恩,我也觉得挺漂亮的!你问我界 ...

  4. Team Foundation Server简介

    对于任何一个软件开发团队而言,成功的一个重要因素在于成员之间.成员与首先使用软件的用户之间有很好的沟通. Team Foundation Server是一个独立的服务器产品,逻辑上,由下列两层组成,这 ...

  5. C#函数式程序设计之用闭包封装数据

    如果一个程序设计语言能够用高阶函数解决问题,则意味着数据作用域问题已十分突出.当函数可以当成参数和返回值在函数之间进行传递时,编译器利用闭包扩展变量的作用域,以保证随时能得到所需要的数据. C#函数式 ...

  6. ok6410 android driver(8)

    In the past, we know how to create and run a simple character device driver on pc, goldfish and ok64 ...

  7. CSS--复习之旅(一)

    CSS概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分 ...

  8. 搜索 --- 数独求解 POJ 2676 Sudoku

    Sudoku Problem's Link:   http://poj.org/problem?id=2676 Mean: 略 analyse: 记录所有空位置,判断当前空位置是否可以填某个数,然后直 ...

  9. 关于URL、Web的一些概念

    关于URL ★ 书写路径时,网络文件用斜杠“/”划分不同层级,本地文件管理系统用反斜杠“\”,分隔不同层级:                               如下图示   ★  绝对/相对 ...

  10. 2016C#模拟谷歌Google登陆Gmail&Youtube小案例

    之所以写这个,是因为本来想写一个Youtube刷评论的工具,把登录做出来了,后面就没继续做下去. 涉及到基本的HttpWatch的应用以及Fiddler的应用(Fd主要用来排查问题,通过对比 浏览器和 ...