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) | 设置响应的状态编码 |
Servlet API遍程常用接口和类的更多相关文章
- JDBC常用接口、类介绍
JDBC常用接口.类介绍 JDBC提供对独立于数据库统一的API,用以执行SQL命令.API常用的类.接口如下: DriverManager 管理JDBC驱动的服务类,主要通过它获取Connectio ...
- JDBC 学习笔记(三)—— JDBC 常用接口和类,JDBC 编程步骤
1. JDBC 常用接口和类 DriverManager 负责管理 JDBC 驱动的服务类,程序中主要的功能是获取连接数据库的 Connection 对象. Connection 代表一个数据库连接对 ...
- Spring常用接口和类
一.ApplicationContextAware接口 当一个类需要获取ApplicationContext实例时,可以让该类实现ApplicationContextAware接口.代码展示如下: p ...
- IT兄弟连 JavaWeb教程 Servlet API
Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类. Servlet可以使用javax.servlet和javax.servlet.http包创建 ...
- Servlet基本用法(二)接口和类
一.摘要 本文主要简单介绍开发Servlet需要用到的接口和类. 二.ServletRequest和ServletResponse接口 当客户请求到来时,由容器创建一个ServletRequest对象 ...
- Servlet基本用法二接口和类
转自:http://www.cnblogs.com/xujian2014/p/4536168.html 一.摘要 本文主要简单介绍开发Servlet需要用到的接口和类. 二.ServletReques ...
- Struts2学习笔记(五)——Action访问Servlet API
在Strut2中访问Servlet API有三种方式: 1.通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API. 步骤: 1 ...
- 配置Struts2及Struts2访问servlet api的方式
Struts2的起源与背景 在很长的一段时间内,在所有的MVC框架中,Struts1处于绝对的统治地位,无论是从市场的普及范围,还是具体的使用者数量. 其他MVC框架都无 法与其相比,作为一一款优秀的 ...
- Struts2中获取servlet API的几种方式
struts2是一个全新的MVC框架,如今被广大的企业和开发者所使用,它的功能非常强大.这给我们在使用servlet 纯java代码写项目的时候带来了福音.但是一般来说,我们的项目不到一定规模并不需要 ...
随机推荐
- tips javascript(一)
tips javascript(一) 实现type函数用于识别标准类型和内置对象类型,语法如下: var t = type(obj); function type(o){ if (o === n ...
- iOS性能优化之内存管理:Analyze、Leaks、Allocations的使用和案例代码
最近接了个小任务,和公司的iOS小伙伴们分享下instruments的具体使用,于是有了这篇博客...性能优化是一个很大的话题,这里讨论的主要是内存泄露部分. 一. 一些相关概念 很多人应该比较了解这 ...
- 高级四则运算器—结对项目总结(193 &105)
高级四则运算器—结对项目总结 为了将感想与项目经验体会分割一下,特在此新开一篇博文. 界面设计 啥都不说,先上图震慑一下... 上面的三个界面是我们本次结对项目的主界面,恩,我也觉得挺漂亮的!你问我界 ...
- Team Foundation Server简介
对于任何一个软件开发团队而言,成功的一个重要因素在于成员之间.成员与首先使用软件的用户之间有很好的沟通. Team Foundation Server是一个独立的服务器产品,逻辑上,由下列两层组成,这 ...
- C#函数式程序设计之用闭包封装数据
如果一个程序设计语言能够用高阶函数解决问题,则意味着数据作用域问题已十分突出.当函数可以当成参数和返回值在函数之间进行传递时,编译器利用闭包扩展变量的作用域,以保证随时能得到所需要的数据. C#函数式 ...
- ok6410 android driver(8)
In the past, we know how to create and run a simple character device driver on pc, goldfish and ok64 ...
- CSS--复习之旅(一)
CSS概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分 ...
- 搜索 --- 数独求解 POJ 2676 Sudoku
Sudoku Problem's Link: http://poj.org/problem?id=2676 Mean: 略 analyse: 记录所有空位置,判断当前空位置是否可以填某个数,然后直 ...
- 关于URL、Web的一些概念
关于URL ★ 书写路径时,网络文件用斜杠“/”划分不同层级,本地文件管理系统用反斜杠“\”,分隔不同层级: 如下图示 ★ 绝对/相对 ...
- 2016C#模拟谷歌Google登陆Gmail&Youtube小案例
之所以写这个,是因为本来想写一个Youtube刷评论的工具,把登录做出来了,后面就没继续做下去. 涉及到基本的HttpWatch的应用以及Fiddler的应用(Fd主要用来排查问题,通过对比 浏览器和 ...