servlet-api基本类和接口介绍   1 comment

基本类和接口

一、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。

Posted 2011年03月14日 by gw8310 in 未分类

One response to “servlet-api基本类和接口介绍

Subscribe to comments with RSS.

  1. 软件包:javax.servlet.http
    所包含的接口:HttpServletRequest;HttpServletResponse;HttpSession;HttpSessionBindingLi[list]
    stener;HttpSessionContext。
    所包含的类:Cookie;HttpServlet;HttpSessionBindingEvent;
    一、HttpServletRequest接口
    定义\
    public interface HttpServletRequest extends ServletRequest;
    用来处理一个对Servlet的HTTP格式的请求信息。
    方法
    1、getAuthType
    public String getAuthType();
    返回这个请求的身份验证模式。
    2、getCookies
    public Cookie[] getCookies();
    返回一个数组,该数组包含这个请求中当前的所有cookie。如果这个请求中没有cookie,返回一个空数组。
    3、getDateHeader
    public long getDateHeader(String name);
    返回指定的请求头域的值,这个值被转换成一个反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。
    如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。
    4、getHeader
    public String getHeader(String name);
    返回一个请求头域的值。(译者注:与上一个方法不同的是,该方法返回一个字符串)
    如果这个请求头域不存在,这个方法返回-1。
    5、getHeaderNames
    public Enumeration getHeaderNames();
    该方法返回一个String对象的列表,该列表反映请求的所有头域名。
    有的引擎可能不允许通过这种方法访问头域,在这种情况下,这个方法返回一个空的列表。
    6、getIntHeader
    public int getIntHeader(String name);
    返回指定的请求头域的值,这个值被转换成一个整数。
    如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。
    7、getMethod
    public String getMethod();
    返回这个请求使用的HTTP方法(例如:GET、POST、PUT)
    8、getPathInfo
    public String getPathInfo();
    这个方法返回在这个请求的URL的Servlet路径之后的请求URL的额外的路径信息。如果这个请求URL包括一个查询字符串,在返回值内将不包括这个查询字符串。这个路径在返回之前必须经过URL解码。如果在这个请求的URL的Servlet路径之后没有路径信息。这个方法返回空值。
    9、getPathTranslated
    public String getPathTranslated();
    这个方法获得这个请求的URL的Servlet路径之后的额外的路径信息,并将它转换成一个真实的路径。在进行转换前,这个请求的URL必须经过URL解码。如果在这个URL的Servlet路径之后没有附加路径信息。这个方法返回空值。
    10、getQueryString
    public String getQueryString();
    返回这个请求URL所包含的查询字符串。一个查询字串符在一个URL中由一个“?”引出。如果没有查询字符串,这个方法返回空值。
    11、getRemoteUser
    public String getRemoteUser
    返回作了请求的用户名,这个信息用来作HTTP用户论证。
    如果在请求中没有用户名信息,这个方法返回空值。
    12、getRequestedSessionId
    public String getRequestedSessionId();
    返回这个请求相应的session id。如果由于某种原因客户端提供的session id是无效的,这个session id将与在当前session中的session id不同,与此同时,将建立一个新的session。
    如果这个请求没与一个session关联,这个方法返回空值。
    13、getRequestURI
    public String getRequestURI();
    从HTTP请求的第一行返回请求的URL中定义被请求的资源的部分。如果有一个查询字符串存在,这个查询字符串将不包括在返回值当中。例如,一个请求通过 /catalog/books?id=1这样的URL路径访问,这个方法将返回/catalog/books。这个方法的返回值包括了Servlet路径和路径信息。
    如果这个URL路径中的的一部分经过了URL编码,这个方法的返回值在返回之前必须经过解码。
    14、getServletPath
    public String getServletPath();
    这个方法返回请求URL反映调用Servlet的部分。例如,一个Servlet被映射到/catalog/summer这个URL路径,而一个请求使用了/catalog/summer/casual这样的路径。所谓的反映调用Servlet的部分就是指/catalog/summer。
    如果这个Servlet不是通过路径匹配来调用。这个方法将返回一个空值。
    15、getSession
    public HttpSession getSession();
    public HttpSession getSession(boolean create);
    返回与这个请求关联的当前的有效的session。如果调用这个方法时没带参数,那么在没有session与这个请求关联的情况下,将会新建一个session。如果调用这个方法时带入了一个布尔型的参数,只有当这个参数为真时,session才会被建立。
    为了确保session能够被完全维持。Servlet开发者必须在响应被提交之前调用该方法。
    如果带入的参数为假,而且没有session与这个请求关联。这个方法会返回空值。
    16、isRequestedSessionIdValid
    public boolean isRequestedSessionIdValid();
    这个方法检查与此请求关联的session当前是不是有效。如果当前请求中使用的session无效,它将不能通过getSession方法返回。
    17、isRequestedSessionIdFromCookie
    public boolean isRequestedSessionIdFromCookie();
    如果这个请求的session id是通过客户端的一个cookie提供的,该方法返回真,否则返回假。
    18、isRequestedSessionIdFromURL
    public boolean isRequestedSessionIdFromURL();
    如果这个请求的session id是通过客户端的URL的一部分提供的,该方法返回真,否则返回假。请注意此方法与isRequestedSessionIdFromUrl在URL的拼写上不同。
    以下方法将被取消\

    19、isRequestedSessionIdFromUrl
    public boolean isRequestedSessionIdFromUrl();
    该方法被isRequestedSessionIdFromURL代替。

    二、HttpServletResponse接口
    定义\

    public interface HttpServletResponse extends ServletResponse
    描述一个返回到客户端的HTTP回应。这个接口允许Servlet程序员利用HTTP协议规定的头信息。
    成员变量
    public static final int SC_CONTINUE = 100;
    public static final int SC_SWITCHING_PROTOCOLS = 101;
    public static final int SC_OK = 200;
    public static final int SC_CREATED = 201;
    public static final int SC_ACCEPTED = 202;
    public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
    public static final int SC_NO_CONTENT = 204;
    public static final int SC_RESET_CONTENT = 205;
    public static final int SC_PARTIAL_CONTENT = 206;
    public static final int SC_MULTIPLE_CHOICES = 300;
    public static final int SC_MOVED_PERMANENTLY = 301;
    public static final int SC_MOVED_TEMPORARILY = 302;
    public static final int SC_SEE_OTHER = 303;
    public static final int SC_NOT_MODIFIED = 304;
    public static final int SC_USE_PROXY = 305;
    public static final int SC_BAD_REQUEST = 400;
    public static final int SC_UNAUTHORIZED = 401;
    public static final int SC_PAYMENT_REQUIRED = 402;
    public static final int SC_FORBIDDEN = 403;
    public static final int SC_NOT_FOUND = 404;
    public static final int SC_METHOD_NOT_ALLOWED = 405;
    public static final int SC_NOT_ACCEPTABLE = 406;
    public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
    public static final int SC_REQUEST_TIMEOUT = 408;
    public static final int SC_CONFLICT = 409;
    public static final int SC_GONE = 410;
    public static final int SC_LENGTH_REQUIRED = 411;
    public static final int SC_PRECONDITION_FAILED = 412;
    public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413;
    public static final int SC_REQUEST_URI_TOO_LONG = 414;
    public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
    public static final int SC_INTERNAL_SERVER_ERROR = 500;
    public static final int SC_NOT_IMPLEMENTED = 501;
    public static final int SC_BAD_GATEWAY = 502;
    public static final int SC_SERVICE_UNAVAILABLE = 503;
    public static final int SC_GATEWAY_TIMEOUT = 504;
    public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
    以上HTTP产状态码是由HTTP/1.1定义的。
    方法
    1、addCookie
    public void addCookie(Cookie cookie);
    在响应中增加一个指定的cookie。可多次调用该方法以定义多个cookie。为了设置适当的头域,该方法应该在响应被提交之前调用。
    2、containsHeader
    public boolean containsHeader(String name);
    检查是否设置了指定的响应头。
    3、encodeRedirectURL
    public String encodeRedirectURL(String url);
    对sendRedirect方法使用的指定URL进行编码。如果不需要编码,就直接返回这个URL。之所以提供这个附加的编码方法,是因为在 redirect的情况下,决定是否对URL进行编码的规则和一般情况有所不同。所给的URL必须是一个绝对URL。相对URL不能被接收,会抛出一个 IllegalArgumentException。
    所有提供给sendRedirect方法的URL都应通过这个方法运行,这样才能确保会话跟踪能够在所有浏览器中正常运行。
    4、encodeURL
    public String encodeURL(String url);
    对包含session ID的URL进行编码。如果不需要编码,就直接返回这个URL。Servlet引擎必须提供URL编码方法,因为在有些情况下,我们将不得不重写URL,例如,在响应对应的请求中包含一个有效的session,但是这个session不能被非URL的(例如cookie)的手段来维持。
    所有提供给Servlet的URL都应通过这个方法运行,这样才能确保会话跟踪能够在所有浏览器中正常运行。
    5、sendError
    public void sendError(int statusCode) throws IOException;
    public void sendError(int statusCode, String message) throws
    IOException;
    用给定的状态码发给客户端一个错误响应。如果提供了一个message参数,这将作为响应体的一部分被发出,否则,服务器会返回错误代码所对应的标准信息。
    调用这个方法后,响应立即被提交。在调用这个方法后,Servlet不会再有更多的输出。
    6、sendRedirect
    public void sendRedirect(String location) throws IOException;
    使用给定的路径,给客户端发出一个临时转向的响应(SC_MOVED_TEMPORARILY)。给定的路径必须是绝对URL。相对URL将不能被接收,会抛出一个IllegalArgumentException。
    这个方法必须在响应被提交之前调用。调用这个方法后,响应立即被提交。在调用这个方法后,Servlet不会再有更多的输出。
    7、setDateHeader
    public void setDateHeader(String name, long date);
    用一个给定的名称和日期值设置响应头,这里的日期值应该是反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。如果响应头已经被设置,新的值将覆盖当前的值。
    8、setHeader
    public void setHeader(String name, String value);
    用一个给定的名称和域设置响应头。如果响应头已经被设置,新的值将覆盖当前的值。
    9、setIntHeader
    public void setIntHeader(String name, int value);
    用一个给定的名称和整形值设置响应头。如果响应头已经被设置,新的值将覆盖当前的值。
    10、setStatus
    public void setStatus(int statusCode);
    这个方法设置了响应的状态码,如果状态码已经被设置,新的值将覆盖当前的值。
    以下的几个方法将被取消\
    11、encodeRedirectUrl
    public String encodeRedirectUrl(String url);
    该方法被encodeRedirectURL取代。
    12、encodeUrl
    public String encodeUrl(String url);
    该方法被encodeURL取代。
    13、setStatus
    public void setStatus(int statusCode, String message);
    这个方法设置了响应的状态码,如果状态码已经被设置,新的值将覆盖当前的值。如果提供了一个message,它也将会被作为响应体的一部分被发送。

    三、HttpSession接口
    定义\
    public interface HttpSession
    这个接口被Servlet引擎用来实现在HTTP客户端和HTTP会话两者的关联。这种关联可能在多外连接和请求中持续一段给定的时间。session用来在无状态的HTTP协议下越过多个请求页面来维持状态和识别用户。
    一个session可以通过cookie或重写URL来维持。
    方法
    1、getCreationTime
    public long getCreationTime();
    返回建立session的时间,这个时间表示为自1970-1-1日(GMT)以来的毫秒数。
    2、getId
    public String getId();
    返回分配给这个session的标识符。一个HTTP session的标识符是一个由服务器来建立和维持的唯一的字符串。
    3、getLastAccessedTime
    public long getLastAccessedTime();
    返回客户端最后一次发出与这个session有关的请求的时间,如果这个session是新建立的,返回-1。这个时间表示为自1970-1-1日(GMT)以来的毫秒数。
    4、getMaxInactiveInterval
    public int getMaxInactiveInterval();
    返加一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。在这个时间之后,Servlet引擎可能被Servlet引擎终止。如果这个session不会被终止,这个方法返回-1。
    当session无效后再调用这个方法会抛出一个IllegalStateException。
    5、getValue
    public Object getValue(String name);
    返回一个以给定的名字绑定到session上的对象。如果不存在这样的绑定,返回空值。
    当session无效后再调用这个方法会抛出一个IllegalStateException。
    6、getValueNames
    public String[] getValueNames();
    以一个数组返回绑定到session上的所有数据的名称。
    当session无效后再调用这个方法会抛出一个IllegalStateException。
    7、invalidate
    public void invalidate();
    这个方法会终止这个session。所有绑定在这个session上的数据都会被清除。并通过HttpSessionBindingListener接口的valueUnbound方法发出通告。
    8、isNew
    public boolean isNew();
    返回一个布尔值以判断这个session是不是新的。如果一个session已经被服务器建立但是还没有收到相应的客户端的请求,这个session将被认为是新的。这意味着,这个客户端还没有加入会话或没有被会话公认。在他发出下一个请求时还不能返回适当的session认证信息。
    当session无效后再调用这个方法会抛出一个IllegalStateException。
    9、putValue
    public void putValue(String name, Object value);
    以给定的名字,绑定给定的对象到session中。已存在的同名的绑定会被重置。这时会调用HttpSessionBindingListener接口的valueBound方法。
    当session无效后再调用这个方法会抛出一个IllegalStateException。
    10、removeValue
    public void removeValue(String name);
    取消给定名字的对象在session上的绑定。如果未找到给定名字的绑定的对象,这个方法什么出不做。 这时会调用HttpSessionBindingListener接口的valueUnbound方法。
    当session无效后再调用这个方法会抛出一个IllegalStateException。
    11、setMaxInactiveInterval
    public int setMaxInactiveInterval(int interval);
    设置一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。
    以下这个方法将被取消\
    12、getSessionContext
    public HttpSessionContext getSessionContext();
    返回session在其中得以保持的环境变量。这个方法和其他所有HttpSessionContext的方法一样被取消了。

    四、HttpSessionBindingListener接口
    定义\
    public interface HttpSessionBindingListener
    这个对象被加入到HTTP的session中,执行这个接口会通告有没有什么对象被绑定到这个HTTP session中或被从这个HTTP session中取消绑定。
    方法
    1、valueBound
    public void valueBound(HttpSessionBindingEvent event);
    当一个对象被绑定到session中,调用此方法。HttpSession.putValue方法被调用时,Servlet引擎应该调用此方法。
    2、valueUnbound
    public void valueUnbound(HttpSessionBindingEvent event);
    当一个对象被从session中取消绑定,调用此方法。HttpSession.removeValue方法被调用时,Servlet引擎应该调用此方法。

    五、HttpSessionContext接口
    定义\
    此接口将被取消\
    public interface HttpSessionContext
    这个对象是与一组HTTP session关联的单一的实体。
    这个接口由于安全的原因被取消,它出现在目前的版本中仅仅是为了兼容性的原因。这个接口的方法将模拟以前的版本的定义返回相应的值。
    方法
    1、getSession
    public HttpSession getSession(String sessionId);
    当初用来返回与这个session id相关的session。现在返回空值。
    2、getIds
    public Enumeration getIds();
    当初用来返回这个环境下所有session id的列表。现在返回空的列表。

    六、Cookie类\
    定义\
    public class Cookie implements Cloneable
    这个类描述了一个cookie,有关cookie的定义你可以参照Netscape Communications Corporation的说明,也可以参照RFC 2109。
    构造函数
    public Cookie(String name, String value);
    用一个name-value对定义一个cookie。这个name必须能被HTTP/1.1所接受。
    以字符$开头的name被RFC 2109保留。
    给定的name如果不能被HTTP/1.1所接受,该方法抛出一个IllegalArgumentException。
    方法
    1、getComment
    public String getComment();
    返回描述这个cookie目的的说明,如果未定义这个说明,返回空值。
    2、getDomain
    public String getDomain();
    返回这个cookie可以出现的区域,如果未定义区域,返回空值。
    3、getMaxAge
    public int getMaxAge();
    这个方法返回这个cookie指定的最长存活时期。如果未定义这个最长存活时期,该方法返回-1。
    4、getName
    public String getName();
    该方法返回cookie名。
    5、getPath
    public String getPath();
    返回这个cookie有效的所有URL路径的前缀,如果未定义,返回空值。
    6、getSecure
    public boolean getSecure();
    如果这个cookie只通过安全通道传输返回真,否则返回假。
    7、getValue
    public String getValue();
    该方法返回cookie的值。
    8、getVersion
    public int getVersion();
    返回cookie的版本。版本1由RFC 2109解释。版本0由Netscape Communications Corporation的说明解释。新构造的cookie默认使用版本0。
    9、setComment
    public void setComment(String purpose);
    如果一个用户将这个cookie提交给另一个用户,必须通过这个说明描述这个cookie的目的。版本0不支持这个属性。
    10、setDomain
    public void setDomain(String pattern);
    这个方法设置cookie的有效域的属性。这个属性指定了cookie可以出现的区域。一个有效域以一个点开头(.foo.com),这意味着在指定的域名解析系统的区域中(可能是www.foo.com但不是a.b.foo.com)的主机可以看到这个cookie。默认情况是,cookie只能返回保存它的主机。
    11、setMaxAge
    public void setMaxAge(int expiry);
    这个方法设定这个cookie的最长存活时期。在该存活时期之后,cookie会被终目。负数表示这个cookie不会生效,0将从客户端删除这个cookie。
    12、setPath
    public void setPath(String uri);
    这个方法设置cookie的路径属性。客户端只能向以这个给定的路径String开头的路径返回cookie。
    13、setSecure
    public void setSecure(boolean flag);
    指出这个cookie只能通过安全通道(例如HTTPS)发送。只有当产生这个cookie的服务器使用安全协议发送这个cookie值时才能这样设置。
    14、setValue
    public void setValue(String newValue);
    设置这个cookie的值,对于二进制数据采用BASE64编码。
    版本0不能使用空格、{}、()、=、,、“”、/、?、@、:以及;。
    15、setVersion
    public void setVersion(int v);
    设置cookie的版本号

    七、HttpServlet类\
    定义\
    public class HttpServlet extends GenericServlet implements
    Serializable
    这是一个抽象类,用来简化HTTP Servlet写作的过程。它是GenericServlet类的扩充,提供了一个处理HTTP协议的框架。
    在这个类中的service方法支持例如GET、POST这样的标准的HTTP方法。这一支持过程是通过分配他们到适当的方法(例如doGet、doPost)来实现的。
    方法
    1、doDelete
    protected void doDelete(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;
    被这个类的service方法调用,用来处理一个HTTP DELETE操作。这个操作允许客户端请求从服务器上删除URL。这一操作可能有负面影响,对此用户就负起责任。
    这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。当你要处理DELETE请求时,你必须重载这一方法。
    2、doGet
    protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;
    被这个类的service方法调用,用来处理一个HTTP GET操作。这个操作允许客户端简单地从一个HTTP服务器“获得”资源。对这个方法的重载将自动地支持HEAD方法。
    GET操作应该是安全而且没有负面影响的。这个操作也应该可以安全地重复。
    这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。
    3、doHead
    protected void doHead(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;
    被这个类的service方法调用,用来处理一个HTTP HEAD操作。默认的情况是,这个操作会按照一个无条件的GET方法来执行,该操作不向客户端返回任何数据,而仅仅是返回包含内容长度的头信息。
    与GET操作一样,这个操作应该是安全而且没有负面影响的。这个操作也应该可以安全地重复。
    这个方法的默认执行结果是自动处理HTTP HEAD操作,这个方法不需要被一个子类执行。
    4、doOptions
    protected void doOptions(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;
    被这个类的service方法调用,用来处理一个HTTP OPTION操作。这个操作自动地决定支持哪一种HTTP方法。例如,一个Servlet写了一个HttpServlet的子类并重载了doGet方法,doOption会返回下面的头:
    Allow: GET,HEAD,TRACE,OPTIONS
    你一般不需要重载这个方法。
    5、doPost
    protected void doPost(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;
    被这个类的service方法调用,用来处理一个HTTP POST操作。这个操作包含请求体的数据,Servlet应该按照他行事。
    这个操作可能有负面影响。例如更新存储的数据或在线购物。
    这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。当你要处理POST操作时,你必须在HttpServlet的子类中重载这一方法。
    6、doPut
    protected void doPut(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;
    被这个类的service方法调用,用来处理一个HTTP PUT操作。这个操作类似于通过FTP发送文件。
    这个操作可能有负面影响。例如更新存储的数据或在线购物。
    这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。当你要处理PUT操作时,你必须在HttpServlet的子类中重载这一方法。
    7、doTrace
    protected void doTrace(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;
    被这个类的service方法调用,用来处理一个HTTP TRACE操作。这个操作的默认执行结果是产生一个响应,这个响应包含一个反映trace请求中发送的所有头域的信息。
    当你开发Servlet时,在多数情况下你需要重载这个方法。
    8、getLastModified
    protected long getLastModified(HttpServletRequest request);
    返回这个请求实体的最后修改时间。为了支持GET操作,你必须重载这一方法,以精确地反映最后修改的时间。这将有助于浏览器和代理服务器减少装载服务器和网络资源,从而更加有效地工作。返回的数值是自1970-1-1日(GMT)以来的毫秒数。
    默认的执行结果是返回一个负数,这标志着最后修改时间未知,它也不能被一个有条件的GET操作使用。
    9、service
    protected void service(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;
    public void service(ServletRequest request, ServletResponse response)
    throws ServletException, IOException;
    这是一个Servlet的HTTP-specific方案,它分配请求到这个类的支持这个请求的其他方法。
    当你开发Servlet时,在多数情况下你不必重载这个方法。

    八、HttpSessionBindingEvent类\
    定义\
    public class HttpSessionBindingEvent extends EventObject
    这个事件是在监听到HttpSession发生绑定和取消绑定的情况时连通HttpSessionBindingListener的。这可能是一个session被终止或被认定无效的结果。
    事件源是HttpSession.putValue或HttpSession.removeValue。
    构造函数
    public HttpSessionBindingEvent(HttpSession session, String name);
    通过引起这个事件的Session和发生绑定或取消绑定的对象名构造一个新的HttpSessionBindingEvent。
    方法
    1、getName
    public String getName();
    返回发生绑定和取消绑定的对象的名字。
    2、getSession
    public HttpSession getSession();
    返回发生绑定和取消绑定的session的名字。

    九、HttpUtils类\
    定义\
    public class HttpUtils
    收集HTTP Servlet使用的静态的有效的方法。
    方法
    1、getRequestURL
    public static StringBuffer getRequestURL(HttpServletRequest
    request);
    在服务器上重建客户端用来建立请求的URL。这个方法反映了不同的协议(例如http和https)和端口,但不包含查询字符串。
    这个方法返回一个StringBuffer而不是一个String,这样URL可以被Servlet开发者有效地修改。
    2、parsePostData
    public static Hashtable parsePostData(int len,
    ServletInputstream in);
    解析一个包含MIME类型application/x-www-form-urlencoded的数据的流,并创建一个具有关键值-数据对的 hash table。这里的关键值是字符串,数据是该字符串所对应的值的列表。一个关键值可以在POST的数据中出现一次或多次。这个关键值每出现一次,它的相应的值就被加入到hash table中的字符串所对应的值的列表中。
    从POST数据读出的数据将经过URL解码,+将被转换为空格以十六进制传送的数据(例如%xx)将被转换成字符。
    当POST数据无效时,该方法抛出一个IllegalArgumentException。
    3、parseQueryString
    public static Hashtable parseQueryString(String s);
    解析一个查询字符串,并创建一个具有关键值-数据对的hash table。这里的数据是该字符串所对应的值的列表。一个关键值可以出现一次或多次。这个关键值每出现一次,它的相应的值就被加入到hash table中的字符串所对应的值的列表中。
    从查询字符串读出的数据将经过URL解码,+将被转换为空格以十六进制传送的数据(例如%xx)将被转换成字符。
    当查询字符串无效时,该方法抛出一个IllegalArgumentException。

    术语表
    bytecode
    字节码:由Java编译器和Java解释程序生成的机器代码。
    cookie
    由Web服务器建立的数据,该数据存储在用户的计算机上,提供了一个Web站点跟踪用户的参数并存储在用户自己硬盘上的方法。
    HTTP
    超文本传输协议。一个请求响应协议用来连接WWW服务器向客户端浏览器传输HTML页面。
    输入流对象
    一个对象,由ServletInputStream类定义,被Servlet用来从客户端读取请求。
    映射
    由Servlet实例和Servlet返回数据的URL组成的一对,例如,HelloServlet和/hello/index.html。
    输出流对象
    一个对象,由ServletOutputStream class类定义,被Servlet用来向客户端返回数据。
    request dispatcher object
    由RequestDispatcher接口定义的一个对象,用来从客户端接收请求,并将其发送到Web服务器上可用的其他资源(例如Servlet、CGI、HTML文件或JSP文件)。
    sandboxed servlet
    在一个安全性约束下运行的Servlet。
    servlet
    一个小的,具有平台无关性的,没有图形用户界面的Java程序。它可以在许多方面扩充Web服务的功能。
    servlet configuration object
    ServletConfig接口定义的一个对象,用来配置一个Servlet。
    servlet context object
    ServletContext接口定义的一个对象。给予Servlet有关Servlet引擎的信息。
    servlet引擎
    由Web服务器提供商制作的一个环境,可以允许Servlet在具体的Web服务器上运行。
    servlet请求对象
    由ServletRequest接口定义的一个对象,允许Servlet获得用关客户端请求的数据。
    servlet response object
    由ServletResponse接口定义的一个对象,允许Servlet作出响应。
    servlet runner
    Java Servlet Developer’s Kit (JSDK)中的sun.servlet.http.HttpServer过程,它使得Servlet得以运行。
    会话跟踪
    在一个Web应用程序中,识别一个从同一个客户端发出的连续的唯一的请求的能力。
    SSL
    加密套接字协议层。一个安全协议,用来在Iternet上的客户端浏览器和服务器交换密钥和加密数据。
    URI
    统一资源标识。定义一个Internet地址,它是一个URL的超集。
    URL
    统一资源路径。这个地址定义了到达一个WWW上的文件的路线,通常由协议前缀、域名、目录名和文件名组成。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: