Servlet常用的api

http://blog.csdn.net/luman1991/article/details/52678559

基本类和接口

一、javax.servlet.Servlet接口

  • servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理的方法集。
  • Servlet接口的基本目标是提供生命期方法init()、service()和destroy()方法。
    servlet接口中的方法
  • void init(ServletConfit config)throws ServletException 在servlet被载入后和实施服务前由servlet引擎进行?次性调用。如果init()产生溢出UnavailableException,则 servle退出服务。
  • ServletConfig getServletConfig() 返回传递到servlet的init()方法的ServletConfig对象
  • void service(ServletRequest request, ServletResponse response)throws ServletException,IOException 处理request对象中描述的请求,使用response对象返回请求结果
  • String getServletInfo() 返回描述servlet的一个字符串
  • void destory() 当servlet将要卸载时由servlet引擎调用

二、javax.servlet.GenericServlet类(协议无关版本)

  • GenericServlet是一种与协议无关的servlet,是一种跟本不对请求提供服务的servlet,而是简单地从init()方法启动后台线程并在destory()中杀死。它可以用于模拟操作系统的端口监控进程。
  • servlet API提供了Servlet接口的直接实现,称为GenericServlet。此类提供除了service()方法外所有接口中方法的缺省实现。这意味着通过简单地扩展GenericServlte可以编写一个基本的servlet。
  • 除了Servlet接口外,GenericServlet也实现了ServletConfig接口,处理初始化参数和servlet上下文,提供对授权传递到init()方法中的ServletConfig对象的方法。

GenericServlet类中的方法

  • void destory() 编飞组成单词“destory”的一个注册入口
  • String getInitParameter(String name) 返回具有指定名称的初始化参数值。通过凋用config.getInitParameter(name)实现。
  • Enumeration getInitParameterNames() 返回此serv]et已编码的所有初始化参数的?个枚举类型值。调用config.getInitParameterNames()获得列表。如果未提供初始化参数,则返回?个空的枚举类型值(但不是null)
  • ServletConfig getServletConfig() 返回传递到init()方法的ServletConfig对象
  • ServletContext getServletContext() 返回在config对象中引用的ServletContext
  • String getServletInfo() 返回空字符串
  • void init(ServletConfig config)throws ServletException 在一实例变量中保存config对象。编写组成单词“init”的注册入口,然后调用方法init()
  • void init()throws ServletException 可以被跳过以处理servlet初始化.在config对象被保存后init(ServletConfig config)的结尾处自动被调用.servlet作者经常会忘记调用super.init(config)
  • void log(String msg) 编写注册servlet的入口.为此调用servlet上下文的log()方法.servlet的名字被加到消息文本的开头。
  • void log(String msg,Throwable t) 编写一个入口和servlet注册的栈轨迹。此方法也是ServletContext中相应方法的一个副本。
  • abstract void service(Request request,Response response)throws ServletException,IOException 由servlet引擎调用为请求对象描述的请求提供服务。这是GenericServlet中唯一的抽象方法。因此它也是唯一必须被子类所覆盖的方法。
  • String getServletName() 返回在Web应用发布描述器(web.xml)中指定的servlet的名字。

三、javax.servlet.http.HttpServlet类(HTTP版本)

虽然servlet API允许扩展到其它协议,但最终所有的servlet均在Web环境下实施操作,只有几种servlet直接扩展了GenericServlet。对servlet更一般的是扩展其HTTP子类HttpServlet。
HttpServlet 类通过调用指定到HTTP请求方法的方法实现service(),亦即对DELETE、HEAD、GET、OPTIONS、POST、PUT和 TRACE,分别调用doDelete()、doHead()、doGet()、doOptions()、doPost()、doPut()和 doTrace()方法,将请求和响应对象置入其HTTP指定子类。

HttpServlet类中的方法

  • Void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP GET请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。
  • Void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP POST请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。
  • Void doPut(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP PUT请求。本方法中请求URI指出被载入的文件位置。
  • Void doDelete(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP DELETE请求。请求URI指出资源被删除。
  • Void doOptions(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP OPTIONS请求。返回一个Allow响应头标表明此servlet支持的HTTP方法。一个servlet不需要覆盖此方法,因为 HttpServlet方法已经实现规范所需的功能。
  • Void doTrace(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 由servlet引擎调用用处理一个HTTP TRACE请求。使得请求头标被反馈成响应关标。一个servlet不需要覆盖此方法,因为HttpServlet方法已经实现HTTP规范所需的功能。
  • Void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException Service(Request request,Response response)调用的一个立即方法,带有指定HTTP请求和响应。此方法实际上将请求导向doGet()、doPost()等等。不应该覆盖此方法。
  • Void service(Request request,Response response)throws ServletException,IOException 将请求和响应对象置入其指定的HTTP子类,并调用指定HTTP的service()方法。

四、javax.servlet.ServletRequest类(协议无关版本)

ServletRequest接口封装了客户端请求的细节。它与协议无关,并有一个指定HTTP的子接口。
ServletRequest主要处理:
1.找到客户端的主机名和IP地址
2.检索请求参数
3.取得和设置属性
4.取得输入和输出流

ServletRequest类中的方法

  • Object getAttribute(String name) 返回具有指定名字的请求属性,如果不存在则返回null。属性可由servlet引擎设置或使用setAttribute()显式加入。
  • Enumeration getAttributeName() 返回请求中所有属性名的枚举。如果不存在属性,则返回一个空的枚举。
  • String getCharacteEncoding() 返回请求所用的字符编码。
  • Int getContentLength() 指定输入流的长度,如果未知则返回-1。
  • ServletInputStream getInputStream()throws IOException 返回与请求相关的(二进制)输入流。可以调用getInputStream()或getReader()方法之一。
  • String getParameter(String name) 返回指定输入参数,如果不存在,返回null。
  • Enumeration getParameterName() 返回请求中所有参数名的一个可能为空的枚举。
  • String[] getParameterValues(String name) 返回指定输入参数名的取值数组,如果取值不存在则返回null。它在参数具有多个取值的情况下十分有用。
  • String get Protocol() 返回请求使用协议的名称和版本。
  • String getScheme() 返回请求URI的子串,但不包含第一个冒号前的内容。
  • String getServerName() 返回处理请求的服务器的主机名。
  • String getServerPort() 返回接收主机正在侦听的端口号。
  • BufferedReader getReader()throws IOException 返回与请求相关输入数据的一个字符解读器。此方法与getInputStream()只可分别调用,不能同时使用。
  • String getRemoteAddr() 返回客户端主机的数字型IP地址。
  • String getRemoteHost() 如果知道,返回客户端主机名。
  • void setAttribute(String name,Object obj) 以指定名称保存请求中指定对象的引用。
  • void removeAttribute(String name) 从请求中删除指定属性
  • Locale getLocale() 如果已知,返回客户端的第一现场或者为null。
  • Enumeration getLocales() 如果已知,返回客户端的第一现场的一个枚举,否则返回服务器第一现场。
  • boolean isSecure() 如果请求使用了如HTTPS安全隧道,返回true
  • RequestDispatcher getRequestDispatcher(String name) 返回指定源名称的RequsetDispatcher对象。

五、javax.servlet.http.HttpServletRequest接口(HTTP版本)

HttpServletRequest类主要处理:
1.读取和写入HTTP头标
2.取得和设置cookies
3.取得路径信息
4.标识HTTP会话

HttpServletRequest接口中的方法

  • String getAuthType() 如果servlet由一个鉴定方案所保护,如HTTP基本鉴定,则返回方案名称。
  • String getContextPath() 返回指定servlet上下文(web应用)的URL的前缀。
  • Cookie[] getCookies() 返回与请求相关cookie的一个数组。
  • Long getDateHeader(String name) 将输出转换成适合构建Date对象的long类型取值的getHeader()的简化版。
  • String getHeader(String name) 返回指定的HTTP头标指。如果其由请求给出,则名字应为大小写不敏感。
  • Enumeration getHeaderNames() 返回请求给出的所有HTTP头标名称的权举值。
  • Enumeration getHeaders(String name) 返回请求给出的指定类型的所有HTTP头标的名称的枚举值,它对具有多取值的头标非常有用。
  • int getIntHeader(String name) 将输出转换为int取值的getHeader()的简化版。
  • String getMethod() 返回HTTP请求方法(例如GET、POST等等)
  • String getPathInfo() 返回在URL中指定的任意附加路径信息。
  • String getPathTranslated() 返回在URL中指定的任意附加路径信息,被子转换成一个实际路径。
  • String getQueryString() 返回查询字符串,即URL中?后面的部份。
  • String getRemoteUser() 如果用户通过鉴定,返回远程用户名,否则为null。
  • String getRequestedSessionId() 返回客户端的会话ID
  • String getRequestURI() 返回URL中一部分,从“/”开始,包括上下文,但不包括任意查询字符串。
  • String getServletPath() 返回请求URI上下文后的子串
  • HttpSession getSession() 调用getSession(true)的简化版。
  • HttpSession getSession(boolean create) 返回当前HTTP会话,如果不存在,则创建一个新的会话,create参数为true。
  • Principal getPrincipal() 如果用户通过鉴定,返回代表当前用户的java.security.Principal对象,否则为null。
  • boolean isRequestedSessionIdFromCookie() 如果请求的会话ID由一个Cookie对象提供,则返回true,否则为false。
  • boolean isRequestedSessionIdFromURL() 如果请求的会话ID在请求URL中解码,返回true,否则为false
  • boolean isRequestedSessionIdValid() 如果客户端返回的会话ID仍然有效,则返回true。
  • Boolean isUserInRole(String role) 如果当前已通过鉴定用户与指定角色相关,则返回true,如果不是或用户未通过鉴定,则返回false。

六、javax.servlet.ServletResponse接口(协议无关版本)

ServletResponse对象将一个servlet生成的结果传到发出请求的客户端。ServletResponse操作主要是作为输出流及其内容类型和长度的包容器,它由servlet引擎创建.

ServletResponse接口中的方法

  • void flushBuffer()throws IOException 发送缓存到客户端的输出内容。因为HTTP需要头标在内容前被发送,调用此方法发送状态行和响应头标,以确认请求。
  • int getBufferSize() 返回响应使用的缓存大小。如果缓存无效则返加0。
  • String getCharacterEncoding() 返回响应使用字符解码的名字。除非显式设置,否则为ISO-8859-1
  • Locale getLocale() 返回响应使用的现场。除非用setLocale()修改,否则缺省为服务器现场。
  • OutputStream getOutputStream()throws IOException 返回用于将返回的二进制输出写入客户端的流,此方法和getWrite()方法二者只能调用其一。
  • Writer getWriter()throws IOException 返回用于将返回的文本输出写入客户端的一个字符写入器,此方法和getOutputStream()二者只能调用其一。
  • boolean isCommitted() 如果状态和响应头标已经被发回客户端,则返回true,在响应被确认后发送响应头标毫无作用。
  • void reset() 清除输出缓存及任何响应头标。如果响应已得到确认,则引发事件IllegalStateException。
  • void setBufferSize(int nBytes) 设置响应的最小缓存大小。实际缓存大小可以更大,可以通过调用getBufferSize()得到。如果输出已被写入,则产生IllegalStateException。
  • void setContentLength(int length) 设置内容体的长度。
  • void setContentType(String type) 设置内容类型。在HTTP servlet中即设置Content-Type头标。
  • void setLocale(Locale locale) 设置响应使用的现场。在HTTP servlet中,将对Content-Type头标取值产生影响。

七、javax.servlet.http.HttpServletResponse接口(HTTP版本)

HttpServletResponse加入表示状态码、状态信息和响应头标的方法,它还负责对URL中写入一Web页面的HTTP会话ID进行解码。

HttpServletResponse接口中的方法

  • void addCookie(Cookie cookie) 将一个Set-Cookie头标加入到响应。
  • void addDateHeader(String name,long date) 使用指定日期值加入带有指定名字(或代换所有此名字头标)的响应头标的方法。
  • void setHeader(String name,String value) 设置具有指定名字和取值的一个响应头标。
  • void addIntHeader(String name,int value) 使用指定整型值加入带有指定名字的响应头标(或代换此名字的所有头标)。
  • boolean containsHeader(String name) 如果响应已包含此名字的头标,则返回true。
  • String encodeRedirectURL(String url) 如果客户端不知道接受cookid,则向URL加入会话ID。第一种形式只对在sendRedirect()中使用的URL进行调用。其他被编码的 URLs应被传递到encodeURL()
  • String encodeURL(String url)
  • void sendError(int status) 设置响应状态码为指定值(可选的状态信息)。HttpServleetResponse定义了一个完整的整数常量集合表示有效状态值。
  • void sendError(int status,String msg)
  • void setStatus(int status) 设置响应状态码为指定指。只应用于不产生错误的响应,而错误响应使用sendError()。

八、javax.servlet.ServletContext接口

一个servlet上下文是servlet引擎提供用来服务于Web应用的接口。Servlet上下文具有名字(它属于Web应用的名字)唯一映射到文件系统的一个目录。
一个servlet可以通过ServletConfig对象的getServletContext()方法得到servlet上下文的引用,如果servlet直接或间接调用子类GenericServlet,则可以使用getServletContext()方法。
Web应用中servlet可以使用servlet上下文得到:
1.在调用期间保存和检索属性的功能,并与其他servlet共享这些属性。
2.读取Web应用中文件内容和其他静态资源的功能。
3.互相发送请求的方式。
4.记录错误和信息化消息的功能。

ServletContext接口中的方法

  • Object getAttribute(String name) 返回servlet上下文中具有指定名字的对象,或使用已指定名捆绑一个对象。从Web应用的标准观点看,这样的对象是全局对象,因为它们可以被同一 servlet在另一时刻访问。或上下文中任意其他servlet访问。
  • void setAttribute(String name,Object obj) 设置servlet上下文中具有指定名字的对象。
  • Enumeration getAttributeNames() 返回保存在servlet上下文中所有属性名字的枚举。
  • ServletContext getContext(String uripath) 返回映射到另一URL的servlet上下文。在同一服务器中URL必须是以“/”开头的绝对路径。
  • String getInitParameter(String name) 返回指定上下文范围的初始化参数值。此方法与ServletConfig方法名称不一样,后者只应用于已编码的指定servlet。此方法应用于上下文中所有的参数。
  • Enumeration getInitParameterNames() 返回(可能为空)指定上下文范围的初始化参数值名字的枚举值。
  • int getMajorVersion() 返回此上下文中支持servlet API级别的最大和最小版本号。
  • int getMinorVersion()
  • String getMimeType(String fileName) 返回指定文件名的MIME类型。典型情况是基于文件扩展名,而不是文件本身的内容(它可以不必存在)。如果MIME类型未知,可以返回null。
  • RequestDispatcher getNameDispatcher(String name) 返回具有指定名字或路径的servlet或JSP的RequestDispatcher。如果不能创建RequestDispatch,返回null。如果指定路径,必须心“/”开头,并且是相对于servlet上下文的顶部。
    RequestDispatcher getNameDispatcher(String path)
  • String getRealPath(String path) 给定一个URI,返回文件系统中URI对应的绝对路径。如果不能进行映射,返回null。
  • URL getResource(String path) 返回相对于servlet上下文或读取URL的输入流的指定绝对路径相对应的URL,如果资源不存在则返回null。
  • InputStream getResourceAsStream(String path)
  • String getServerInfo() 返顺servlet引擎的名称和版本号。
  • void log(String message)
  • void log(String message,Throwable t) 将一个消息写入servlet注册,如果给出Throwable参数,则包含栈轨迹。
  • void removeAttribute(String name) 从servlet上下文中删除指定属性。

九、javax.servlet.http.HttpSession接口

HttpSession类似于哈希表的接口,它提供了setAttribute ()和getAttribute()方法存储和检索对象。HttpSession提供了一个会话ID关键字,一个参与会话行为的客户端在同一会话的请求中存储和返回它。servlet引擎查找适当的会话对象,并使之对当前请求可用。

HttpSession接口中的方法

  • Object getAttribute(String name) 将会话中一个对象保存为指定名字,返回或删除前面保存的此名称对象。
  • void setAttribute(String name,Object value)
  • void removeAttribute(String name)
  • Enumeration getAttributeName() 返回捆绑到当前会话的所有属性名的枚举值。
  • long getCreationTime() 返回表示会话创建和最后访问日期和时间的一个长整型,该整型形式为java.util.Date()构造器中使用的形式。
  • long getLastAccessedTime()
  • String getId() 返回会话ID,servlet引擎设置的一个唯一关键字。
  • ing getMaxInactiveInterval() 如果没有与客户端发生交互,设置和返回会话存活的最大秒数。
  • void setMasInactiveInterval(int seconds)
  • void invalidate() 使得会话被终止,释放其中任意对象。
  • boolean isNew() 如果客户端仍未加入到会话,返回true。当会话首次被创建,会话ID被传入客户端,但客户端仍未进行包含此会话ID的第二次请示时,返回true。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,087评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,292评论 18 399
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,003评论 11 349
  • 一 servlet概述 狭义的Servlet指javax.servlet包中的一个接口,而广义的Servlet则是...
    静慎独阅读 417评论 0 0
  • 2017年8月22日,如是家人莲花遍智,种种子第22天。 发心:我今不仅仅是为了我个人而闻思修,更是为了六道轮回一...
    吴宗泽阅读 143评论 1 2