一javaxservletServlet接口
servlet抽象集是javaxservletServlet接口它规定了必须由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 ServletExceptionIOException 处理request对象中描述的请求使用response对象返回请求结果
String getServletInfo() 返回描述servlet的一个字符串
void destory() 当servlet将要卸载时由servlet引擎调用
二javaxservletGenericServlet类(协议无关版本)
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) 返回具有指定名称的初始化参数值通过凋用configgetInitParameter(name)实现
Enumeration getInitParameterNames() 返回此serv]et已编码的所有初始化参数的?个枚举类型值调用configgetInitParameterNames()获得列表如果未提供初始化参数则返回?个空的枚举类型值(但不是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作者经常会忘记调用superinit(config)
void log(String msg) 编写注册servlet的入口为此调用servlet上下文的log()方法servlet的名字被加到消息文本的开头
void log(String msgThrowable t) 编写一个入口和servlet注册的栈轨迹此方法也是ServletContext中相应方法的一个副本
abstract void service(Request requestResponse response)throws ServletExceptionIOException 由servlet引擎调用为请求对象描述的请求提供服务这是GenericServlet中唯一的抽象方法因此它也是唯一必须被子类所覆盖的方法
String getServletName() 返回在Web应用发布描述器(webxml)中指定的servlet的名字
三javaxservlethttpHttpServlet类(HTTP版本)
虽然servlet API允许扩展到其它协议但最终所有的servlet均在Web环境下实施操作只有几种servlet直接扩展了GenericServlet对servlet更一般的是扩展其HTTP子类HttpServlet
HttpServlet 类通过调用指定到HTTP请求方法的方法实现service()亦即对DELETEHEADGETOPTIONSPOSTPUT和 TRACE分别调用doDelete()doHead()doGet()doOptions()doPost()doPut()和 doTrace()方法将请求和响应对象置入其HTTP指定子类
HttpServlet类中的方法
Void doGet(HttpServletRequest requestHttpServletResponse response)throws ServletExceptionIOException 由servlet引擎调用用处理一个HTTP GET请求输入参数HTTP头标和输入流可从request对象response头标和response对象的输出流中获得
Void doPost(HttpServletRequest requestHttpServletResponse response)throws ServletExceptionIOException 由servlet引擎调用用处理一个HTTP POST请求输入参数HTTP头标和输入流可从request对象response头标和response对象的输出流中获得
Void doPut(HttpServletRequest requestHttpServletResponse response)throws ServletExceptionIOException 由servlet引擎调用用处理一个HTTP PUT请求本方法中请求URI指出被载入的文件位置
Void doDelete(HttpServletRequest requestHttpServletResponse response)throws ServletExceptionIOException 由servlet引擎调用用处理一个HTTP DELETE请求请求URI指出资源被删除
Void doOptions(HttpServletRequest requestHttpServletResponse response)throws ServletExceptionIOException 由servlet引擎调用用处理一个HTTP OPTIONS请求返回一个Allow响应头标表明此servlet支持的HTTP方法一个servlet不需要覆盖此方法因为 HttpServlet方法已经实现规范所需的功能
Void doTrace(HttpServletRequest requestHttpServletResponse response)throws ServletExceptionIOException 由servlet引擎调用用处理一个HTTP TRACE请求使得请求头标被反馈成响应关标一个servlet不需要覆盖此方法因为HttpServlet方法已经实现HTTP规范所需的功能
Void service(HttpServletRequest requestHttpServletResponse response)throws ServletExceptionIOException Service(Request requestResponse response)调用的一个立即方法带有指定HTTP请求和响应此方法实际上将请求导向doGet()doPost()等等不应该覆盖此方法
Void service(Request requestResponse response)throws ServletExceptionIOException 将请求和响应对象置入其指定的HTTP子类并调用指定HTTP的service()方法
四javaxservletServletRequest类(协议无关版本)
ServletRequest接口封装了客户端请求的细节它与协议无关并有一个指定HTTP的子接口
ServletRequest主要处理
找到客户端的主机名和IP地址
检索请求参数
取得和设置属性
取得输入和输出流
ServletRequest类中的方法
Object getAttribute(String name) 返回具有指定名字的请求属性如果不存在则返回null属性可由servlet引擎设置或使用setAttribute()显式加入
Enumeration getAttributeName() 返回请求中所有属性名的枚举如果不存在属性则返回一个空的枚举
String getCharacteEncoding() 返回请求所用的字符编码
Int getContentLength() 指定输入流的长度如果未知则返回
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 nameObject obj) 以指定名称保存请求中指定对象的引用
void removeAttribute(String name) 从请求中删除指定属性
Locale getLocale() 如果已知返回客户端的第一现场或者为null
Enumeration getLocales() 如果已知返回客户端的第一现场的一个枚举否则返回服务器第一现场
boolean isSecure() 如果请求使用了如HTTPS安全隧道返回true
RequestDispatcher getRequestDispatcher(String name) 返回指定源名称的RequsetDispatcher对象
Trackback: x?PostId=
五javaxservlethttpHttpServletRequest接口(HTTP版本)
HttpServletRequest类主要处理
读取和写入HTTP头标
取得和设置cookies
取得路径信息
标识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请求方法(例如GETPOST等等)
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() 如果用户通过鑒定返回代表当前用户的javasecurityPrincipal对象否则为null
boolean isRequestedSessionIdFromCookie() 如果请求的会话ID由一个Cookie对象提供则返回true否则为false
boolean isRequestedSessionIdFromURL() 如果请求的会话ID在请求URL中解码返回true否则为false
boolean isRequestedSessionIdValid() 如果客户端返回的会话ID仍然有效则返回true
Boolean isUserInRole(String role) 如果当前已通过鑒定用户与指定角色相关则返回true如果不是或用户未通过鑒定则返回false
六javaxservletServletResponse接口(协议无关版本)
ServletResponse对象将一个servlet生成的结果传到发出请求的客户端ServletResponse操作主要是作为输出流及其内容类型和长度的包容器它由servlet引擎创建
ServletResponse接口中的方法
void flushBuffer()throws IOException 发送缓存到客户端的输出内容因为HTTP需要头标在内容前被发送调用此方法发送状态行和响应头标以确认请求
int getBufferSize() 返回响应使用的缓存大小如果缓存无效则返加
String getCharacterEncoding() 返回响应使用字符解码的名字除非显式设置否则为ISO
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中即设置ContentType头标
void setLocale(Locale locale) 设置响应使用的现场在HTTP servlet中将对ContentType头标取值产生影响
七javaxservlethttpHttpServletResponse接口(HTTP版本)
HttpServletResponse加入表示状态码状态信息和响应头标的方法它还负责对URL中写入一Web页面的HTTP会话ID进行解码
HttpServletResponse接口中的方法
void addCookie(Cookie cookie) 将一个SetCookie头标加入到响应
void addDateHeader(String namelong date) 使用指定日期值加入带有指定名字(或代换所有此名字头标)的响应头标的方法
void setHeader(String nameString value) 设置具有指定名字和取值的一个响应头标
void addIntHeader(String nameint 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 statusString msg)
void setStatus(int status) 设置响应状态码为指定指只应用于不产生错误的响应而错误响应使用sendError()
八javaxservletServletContext接口
一个servlet上下文是servlet引擎提供用来服务于Web应用的接口Servlet上下文具有名字(它属于Web应用的名字)唯一映射到文件系统的一个目录
一个servlet可以通过ServletConfig对象的getServletContext()方法得到servlet上下文的引用如果servlet直接或间接调用子类GenericServlet则可以使用getServletContext()方法
Web应用中servlet可以使用servlet上下文得到
在调用期间保存和检索属性的功能并与其他servlet共享这些属性
读取Web应用中文件内容和其他静态资源的功能
互相发送请求的方式
记录错误和信息化消息的功能
ServletContext接口中的方法
Object getAttribute(String name) 返回servlet上下文中具有指定名字的对象或使用已指定名捆绑一个对象从Web应用的标准观点看这样的对象是全局对象因为它们可以被同一 servlet在另一时刻访问或上下文中任意其他servlet访问
void setAttribute(String nameObject 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 messageThrowable t) 将一个消息写入servlet注册如果给出Throwable参数则包含栈轨迹
void removeAttribute(String name) 从servlet上下文中删除指定属性
九javaxservlethttpHttpSession接口
HttpSession类似于哈希表的接口它提供了setAttribute ()和getAttribute()方法存储和检索对象HttpSession提供了一个会话ID关键字一个参与会话行为的客户端在同一会话的请求中存储和返回它servlet引擎查找适当的会话对象并使之对当前请求可用
HttpSession接口中的方法
Object getAttribute(String name) 将会话中一个对象保存为指定名字返回或删除前面保存的此名称对象
void setAttribute(String nameObject value)
void removeAttribute(String name)
Enumeration getAttributeName() 返回捆绑到当前会话的所有属性名的枚举值
long getCreationTime() 返回表示会话创建和最后访问日期和时间的一个长整型该整型形式为javautilDate()构造器中使用的形式
long getLastAccessedTime()
String getId() 返回会话IDservlet引擎设置的一个唯一关键字
ing getMaxInactiveInterval() 如果没有与客户端发生交互设置和返回会话存活的最大秒数
void setMasInactiveInterval(int seconds)
void invalidate() 使得会话被终止释放其中任意对象
boolean isNew() 如果客户端仍未加入到会话返回true当会话首次被创建会话ID被传入客户端但客户端仍未进行包含此会话ID的第二次请示时返回true