本文主要总结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. C#基础总结之四List-Hashtable-冒泡排序

    #region 第四天作业 名片--------ArrayList //ArrayList card = new ArrayList(); //card.Add("2202111001122 ...

  2. `cocos2dx非完整`开篇

    相信每个人都有一些自己的项目开发习惯,在·开篇·中我主要是会提到一些项目的配置问题.无论做一款什么样的手游项目,我们总是会从需求的角度出发去选择开发引擎,开发工具等一些列的工具去完善我们的开发环境.当 ...

  3. MyBatis知多少(10)应用程序数据库

    应用程序数据库往往是最小.最简单.也最易于使用的数据库.这种数据库往往是我们这些开发人员通常不介意使用甚至非常乐意使用的.应用程序数据库通常与我们的应用程序处于同一个项目中,两者一齐设计和实现.正是因 ...

  4. Tomcat--配置tomcat,使其除了接受本地访问外,拒绝其他 IP 的访问

    解决方案:修改server.xml文件,在</host>前添加代码: <Valve className="org.apache.catalina.valves.Remote ...

  5. Linux内核中双向链表的经典实现

    概要 前面一章"介绍双向链表并给出了C/C++/Java三种实现",本章继续对双向链表进行探讨,介绍的内容是Linux内核中双向链表的经典实现和用法.其中,也会涉及到Linux内核 ...

  6. 妙味5:document.cookie 操作

    本地环境中测试需要用fireFox,其它几个浏览器不行,服务器都可以测出正确结果   cookie特点: 1. 如登陆信息存储,同一论坛打开多个页面不用重复登陆,就是通过cookie来存取实现: 2. ...

  7. win8.1注册表-修改资源管理器的默认路径regedit

    默认情况下,激活Win8的资源管理器都是直接打开库,对于习惯了以前版本的Windows用户来说,还要重新选择“计算机”才能进入相应的磁盘寻找文件,操作起来很是不便.为此,可以进行设置,让资源管理器默认 ...

  8. ActiveReports 报表应用教程 (7)---交叉报表及数据透视图实现方案

    在 ActiveReports 中可以通过矩阵控件非常方便的实现交叉报表,同时还可以设置数据的分组.排序.过滤.小计.合计等操作,可以满足您报表的智能数据分析等需求.在矩阵控件中组的行数和列数由每个行 ...

  9. 译 PrestaShop开发者指南 第二篇 代码规范

    原文:<http://doc.prestashop.com/display/PS15/Coding+Standards> 废话不多译了,讲重点. 代码风格验证工具:CodeSniffer( ...

  10. CentOS常用指令

    创建文件: 如touch a.txt 创建文件夹: mkdir -p 文件夹名,当文件夹不存在时候,创建这个文件夹 文件重命名: 把文件text.php得命名为index.php,可以是rename ...