九乡新闻网:想知道神马,提问回答学习问题百度都知道

黑人巨大作品番号:Servlet技术(上)

来源:百度文库 编辑:九乡新闻网 时间:2024/05/03 09:21:47

l   请求对象(ServletRequest和HttpServletRequest):Servlet从该对象中获取来自客户端的请求信息。

l   响应对象(ServletResponse和HttpServletResponse):Servlet通过该对象来生成相应结果

l   Servlet配置对象(ServletConfig):当容器初始化一个Servlet对象时,会向Servlet提供一个ServletConfig对象,Servlet通过该对象来获取初始化参数信息及ServletContext对象。

l   Servlet上下文对象(ServletContext):Servlet通过该对象来访问容器为当前Web应用提供的各种资源。

Servlet API的JavaDoc文档可以到Servlet规范官网下载:

Http://java.sun.com/products/servlet/index.jsp

 

Servlet API接口图

图4-1显示了Servlet API中的主要接口与类的类框图。

 

Servlet接口

Servlet API的核心是javax.servlet.Servlet接口,所有的Servlet类都必须实现这一接口。在Servlet接口中定义了5个方法,其中有3个方法都由Servlet容器来调用,容器会在Servlet的生命周期的不同阶段调用特定的方法。

init(ServletConfig config)方法:负责初始化Servlet对象。容器在创建好Servlet对象后,就会调用该方法。

service(ServletRequest req, ServletResponse res)方法:负责响应客户的请求,为客户提供相应服务。当容器接收到客户端要求访问特定Servlet对象的请求时,就会调用该Servlet对象的service()方法。

destroy()方法:负责释放Servlet对象占用的资源。当Servlet对象结束生命周期时,容器会调用此方法。

Servlet接口还定义了以下两个返回Servlet的相关信息的方法。JavaWeb应用中的程序代码可以访问Servlet的这两个方法,从而获得Servlet的配置信息及其他相关信息。

getServletConfig():返回一个 ServletConfig 对象,在该对象中包含了 Servlet的初始化参数信息。

getServletInfo():返回一个字符串,在该字符串中包含了Servlet的创建者、版本和版权等信息。

在 Servlet API 中,javax.servlet.GenericServlet 抽象类实现了 Servlet 接口,而javax.servlet.http.HttpServlet 抽象类是 GenericServlet 类的子类。当用户开发自己的Servlet类时,可以选择扩展GenericServlet类或者HttpServlet类。图4-2显示了 Servlet接口及其实现类的类框图。

Servlet接口

Servlet API的核心是javax.servlet.Servlet接口,所有的Servlet类都必须实现这一接口。在Servlet接口中定义了5个方法,其中有3个方法都由Servlet容器来调用,容器会在Servlet的生命周期的不同阶段调用特定的方法。

init(ServletConfig config)方法:负责初始化Servlet对象。容器在创建好Servlet对象后,就会调用该方法。

service(ServletRequest req, ServletResponse res)方法:负责响应客户的请求,为客户提供相应服务。当容器接收到客户端要求访问特定Servlet对象的请求时,就会调用该Servlet对象的service()方法。

destroy()方法:负责释放Servlet对象占用的资源。当Servlet对象结束生命周期时,容器会调用此方法。

Servlet接口还定义了以下两个返回Servlet的相关信息的方法。JavaWeb应用中的程序代码可以访问Servlet的这两个方法,从而获得Servlet的配置信息及其他相关信息。

getServletConfig():返回一个 ServletConfig 对象,在该对象中包含了 Servlet的初始化参数信息。

getServletInfo():返回一个字符串,在该字符串中包含了Servlet的创建者、版本和版权等信息。

在 Servlet API 中,javax.servlet.GenericServlet 抽象类实现了 Servlet 接口,而javax.servlet.http.HttpServlet 抽象类是 GenericServlet 类的子类。当用户开发自己的Servlet类时,可以选择扩展GenericServlet类或者HttpServlet类。图4-2显示了 Servlet接口及其实现类的类框图。

(点击查看大图)图4-2 Servlet接口及其实现类的类框图

Java Servlet API中接口与类的作用与生命周期作了归纳。这些接口与类的生命周期都由Servlet容器来控制,容器会在特定的时刻创建或销毁它们的实例。

表4-1 Servlet API中的主要的接口与类的作用和生命周期

(续表)

在Servlet接口中定义了3个与生命周期相关的方法。

init():当容器初始化Servlet时调用该方法。

service():当客户端请求访问Servlet时,容器调用该方法。

destroy():当容器销毁Servlet时调用该方法。

以本章4.1.7节的例程4-4的HelloServlet类为例,在编写用于响应HTTP请求的Servlet时,通常涉及下列4个步骤。

(1)扩展HttpServlet抽象类。

(2)覆盖HttpServlet的部分方法,如覆盖doGet()或doPost()方法。

(3)读取HTTP请求信息,例如通过HttpServletRequest 对象来读取请求参数。

在HttpServletRequest中提供了以下用于检索参数信息的方法。

getParameter(String name):返回与参数名name对应的参数值。

getParameterNames():返回一个Enumeration对象,它包含了所有的参数名信息。

getParameterValues():返回一个Enumeration对象,它包含了所有的参数值信息。

(4)生成 HTTP 响应结果。通过 HttpServletResponse 对象可以生成响应结果,HttpServletResponse 对象有一个getWriter()方法,该方法返回一个PrintWriter对象。使用PrintWriter的print()或println()方法可以向客户端发送字符串数据流。  

Servlet API——GenericServlet类的简述

GenericServlet类的简述:public abstract class GenericServlet extends java.lang.Object
implements Servlet, ServletConfig, java.io.Serializable

java.lang.Object
|
+--javax.servlet.GenericServlet
父类/接口:java.io.Serializable接口,Servlet接口,ServletConfig接口
子类:HttpServlet类

该类定义一个普通的、依赖于协议的servlet,如果要写一个用于Web的HTTP servlet,扩展HpptServlet。
一个servlet可以直接扩展GenericServlet类,然而扩展一个指定协议的子类(如HttpServlet)显得更为普遍。
GenericServlet类使编写servlets变得更容易。它提供了一般版本的生命周期方法:inin(),destroy()和来自ServletConfig接口的方法。GenericServlet类也实现了log()方法,这是一个在ServletContext类中定义的方法。
由于GenericServlet是一个抽象类,所以要扩展这个类,你必须实现这个类的所有抽象方法。

destory()方法作用与Servlet.destory()方法相同,略。

getInitParameter()方法概述:public java.lang.String getInitParameter(java.lang.String name)
返回一个包含初始化变量的值的字符串,如果变量不存在则返回null,该方法从servlet的ServletConfig变量获得命名变量的值。

getInitParameterNames()方法概述:public java.util.Enumeration getInitParameterNames()
该方法返回一个包含所有初始化变量的枚举函数。如果没有初始化变量,则返回一个空枚举函数。

getServletConfig()方法概述:public ServletConfig getServletConfig()
返回一个servlet的ServletConfig对象getServletContext()方法与ServletConfig.getServletContext()相同,略。

getServletInfo()方法概述:public java.lang.String getServletInfo()
该方法来源于Servlet接口,覆写该方法以产生有意义的信息。(如:版本号、版权、作者等)

init(ServletConfig config)方法概述:public void init(ServletConfig config) throws ServletException
该方法来源于Servlet接口,覆写该方法,必须调用super.init(config)

init()方法概述:public void init() throws ServletException
该方法重载Servlet.init(ServletConfig config)方法而无需调用super.init(config)。而ServletConfig对象依然可以通过调用getServletConfig()方法获得。

log(java.lang.String msg)方法概述:public void log(java.lang.String msg)
该方法把指定的信息写入一个日志文件,见ServletContext.log(String)。

log(java.lang.String message,java.lang.Throwable t)方法概述:public void log(java.lang.String message,java.lang.Throwable t)
该方法把解释性的内容和抛出的例外信息写入一个日志文件。

service()方法概述:public abstract void service(ServletRequest req,ServletResponse res)
throws ServletException,java.io.IOException
该方法必须由servlet容器调用以允许servlet 对请求作出响应。
见Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)。

getServletName(),见ServletConfig.getServletName()。

  附上源代码:如下地址:http://www.docjar.org/html/api/javax/servlet/GenericServlet.java.html  HttpServlet详细解析

  Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的的通用接口和类.在javax.servlet.http包中定义了采用HTTP通信协议的HttpServlet类.

  Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口 .在Servlet接口中定义了5个方法,其中有3个方法代表了Servlet的生命周期:

  init方法,负责初始化Servlet对象

  service方法,负责相应客户的请求

  destory方法,当Servlet对象退出声明周期时,负责释放占有的资源

  当Web容器接收到某个Servlet请求时,Servlet把请求封装成一个HttpServletRequest对象,然后把对象传给Servlet的对应的服务方法.

  HTTP的请求方式包括DELETE,GET,OPTIONS,POST,PUT和TRACE,在HttpServlet类中分别提供了相应的服务方法, 它们是,doDelete(),doGet(),doOptions(),doPost(), doPut()和doTrace().

  HttpServlet的功能

  HttpServlet首先必须读取Http请求的内容。Servlet容器负责创建HttpServlet对象,并把 Http请求直接封装到HttpServlet对象中,大大简化了HttpServlet解析请求数据的工作量。HttpServlet容器响应Web客户请求流程如下:

  1)Web客户向Servlet容器发出Http请求;

  2)Servlet容器解析Web客户的Http请求;

  3)Servlet容器创建一个HttpRequest对象,在这个对象中封装Http请求信息;

  4)Servlet容器创建一个HttpResponse对象;

  5)Servlet容器调用HttpServlet的service方法,把HttpRequest和HttpResponse对象作为service方法的参数传给HttpServlet对象;

  6)HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息;

  7)HttpServlet调用HttpResponse的有关方法,生成响应数据;

  8)Servlet容器把HttpServlet的响应结果传给Web客户。

  二、创建HttpServlet的步骤——“四部曲”

  1)扩展HttpServlet抽象类;

  2)覆盖HttpServlet的部分方法,如覆盖doGet()或doPost()方法;

  3)获取HTTP请求信息。通过HttpServletRequest对象来检索HTML表单所提交的数据或URL上的查询字符串;

  4)生成HTTP响应结果。通过HttpServletResponse对象生成响应结果,它有一个getWriter()方法,该方法返回一个PrintWriter对象。

  举个例子如下:

  package mypack;

  import javax.servlet.*;

  import javax.servlet.http.*;

  import java.io.*;

  public class HelloServlet extends HttpServlet//第一步:扩展HttpServlet抽象类

  {

  //第二步:覆盖doGet()方法

  public void doGet(HttpServletRequest request,

  HttpServletResponse response)throws IOException,ServletException{

  //第三步:获取HTTP请求中的参数信息

  String clientName=request.getParameter("clientName");

  if(clientName!=null)

  clientName=new String(clientName.getBytes("ISO-8859-1"),"GB2312");

  else

  clientName="我的朋友";

  //第四步:生成HTTP响应结果

  PrintWriter out;

  String title="HelloServlet";

  String heading1="HelloServlet的doGet方法的输出:";

  //set content type

  response.setContentType("text/html;charset=GB2312");

  //write html page

  out=response.getWriter();

  out.print("");

  out.print("");

  out.print(heading1);

  out.println("

 

");

  out.print("");

  out.close();

  }

  }

  在web.xml中添加

  

  HelloServlet

  mypack.HelloServlet

  

  

  HelloServlet

  /hello

  

  通过URL访问HelloServlet:

  注意:

  实现service方法

  Servlet 的主要功能是接受从浏览器发送过来的HTTP请求(request),并返回HTTP响应(response)。这个工作是在service方法中完成的。service方法包括从request对象获得客户端数据和向response对象创建输出。

  如果一个 Servlet从javax.servlet.http.HttpServlet继承,实现了doPost或doGet方法,那么这个Servlet只能对POST或GET做出响应。如果开发人员想处理所有类型的请求(request),只要简单地实现service方法即可(但假如选择实现 service方法,则不必实现doPost或doGet方法,除非在service方法的开始调用super.service())。
ServletRequest接口

ServletRequest接口主要是用于得到客户端的信息,在Servlet接口中service(ServletRequest req,ServletResponse res),ServletRequest就是此接口

主要的方法有:

getContentLength():返回请求正文的长度。如果请求正文的长度未知,则返回-1。

getContentType():获得请求正文的MIME类型。如果请求正文的类型未知,则返回null。

getInputStream():返回用于读取请求正文的输入流。

getLocalAddr() :返回服务器端的IP地址。

getLocalName():返回服务器端的主机名。

getLocalPort():返回服务器端的FTP端口号。

getParameter(String name):根据给定的请求参数名,返回来自客户请求中的匹配的请求参数值。关于请求参数的概念,参见本书第 1 章的 1.7 节(处理HTTP请求参数及HTML表单)。

getProtocol():返回客户端与服务器端通信所用的协议的名称及版本号。

getReader():返回用于读取字符串形式的请求正文的BufferedReader对象。

getRemoteAddr():返回客户端的IP地址。

getRemoteHost():返回客户端的主机名。

getRemotePort():返回客户端的FTP端口号。

setAttribute(String name, java.lang.Object object) :在请求范围内保存一个属性,参数name表示属性名,参数object表示属性值。

getAttribute(String name) :根据name参数给定的属性名,返回请求范围内的匹配的属性值。

removeAttribute(String name) :从请求范围内删除一个属性。

 

这里需要注意的是请求范围,这范围具体指的是什么,

Request是每个客户端发出的一次请求,这是J2EE系统中最基本的事件激活单元, 当服务器端推出一个页面到客户端时,意味着这个Request的结束。那么如果我们的状态保存在Request中,意味着在request结束之前,这个请求经历的任何一个环节都可以对这个状态(对象)进行操作。

  HttpServletRequestHttpServletRequest类主要处理:
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。
  HttpServletResponse接口 

HttpServletResponse接口是ServletResponse的子接口,HttpServlet类的重载service()方法及doGet()和doPost()等方法都有一个HttpServletResponse类型参数:

protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException

HttpServletResponse 接口提供了与 HTTP 协议相关的一些方法,Servlet 可通过这些方法来设置HTTP响应头或向客户端写Cookie。

addHeader(String name, String value):向HTTP响应头中加入一项内容。

sendError(int sc):向客户端发送一个代表特定错误的HTTP响应状态代码。

sendError(int sc, String msg):向客户端发送一个代表特定错误的HTTP响应状态代码,并且发送具体的错误消息。

setHeader(String name, String value):设置HTTP响应头中的一项内容。如果在响应头中已经存在这项内容,那么原先所做的设置将被覆盖。

setStatus(int sc):设置HTTP响应的状态代码。

addCookie(Cookie cookie):向HTTP响应中加入一个Cookie。

在HTTPServletResponse接口中定义了一些代表HTTP响应状态代码的静态常量,如下所示。

HTTPServletResponse. SC_BAD_REQUEST:对应的响应状态代码为400。

HTTPServletResponse. SC_FOUND:对应的响应状态代码为302。

HTTPServletResponse. SC_METHOD_NOT_ALLOWED:对应的响应状态代码为405。

HTTPServletResponse. SC_NON_AUTHORITATIVE_INFORMATION:对应的响应状态代码为203。

HTTPServletResponse. SC_FORBIDDEN:对应的响应状态代码为403。

HTTPServletResponse. SC_NOT_FOUND:对应的响应状态代码为404。  

ServletConfig接口

在初始化过程中,Servlet容器使用ServletConfig接口的对象作为参数传递Servlet的配置信息。

ServletConfig接口的方法分别如下:

getServletName():用于获取Servlet实例的名称。getServletName()的语法为:

public String getServletName()

getInitParameter():检索初始化参数的值。如果参数不存在,则getInitParameter()方法返回NULL。getInitParameter()的语法为:

public String getInitParameter(String name)

其中,name是初始化参数的名称字符串。

getServletContext():返回Servlet用来与其容器交互的ServletContext对象GetServletContext()方法的语法为:

public ServletContext getServletContext()    

1. ServletConfig接口用于描述Servlet本身的相关配置信息。ServletContext接口用于描述应用程序(server.xml中的一个Context配置,即一个虚拟目录)的相关信息。

2. Servlet配置初始化参数,例如:

XXX

Xxx

yyy

xxx

这些初始化参数,可以通过this.getServletConfig.getInitParameter()获取。

3. javax.servlet.Servlet接口是Servlet的基本接口,所有定义的Servlet都要实现这个接口。Javax.servlet.GenericServlet是实现了这个借口的基础类。HttpServlet就是继承与GenericServlet类。GenericServlet实现了ServletConfig接口,所以在HttpServlet中可以直接调用ServletConfig中的方法,例如HttpServlet.getInitParameter(),HttpServlet.getServletName();HttpServlet.getServletContext()方法等,而不必使用this.getServletConfig.getInitParameter()等方式获取。

4. Servlet的init方法:

javax.servlet.Servlet接口的init方法是带有参数的,原方法是:init(ServletConfig config)方法。GeneralServlet类实现了Servlet接口后,在init(ServletConfig config)方法中实现了基本的功能后,有调用了无参数的init()方法用于扩展。所以在我们继承HttpServlet方法中,一般重写的都是无参的init方法。

5. Servlet的service方法:

这个方法是Servlet的主要方法。所有请求都将交给这个方法来执行。在HttpServlet中,service方法的作用是根据请求的类型,分别将请求交给doPost,doGet等方法去处理。所以在HttpServlet中,只需要重写doPost,doGet等方法,如果重写了doService方法,doPost,doGet方法将不起作用。    

ServletContext接口的简述:public interface ServletContext

定义了一系列方法用于与相应的servlet容器通信,比如:获得文件的MIME类型,分派请求,或者是向日志文件写日志等。
每一个web-app只能有一个ServletContext,web-app可以是一个放置有web application 文件的文件夹,也可以是一个.war的文件。
ServletContext对象包含在ServletConfig对象之中,ServletConfig对象在servlet初始化时提供servlet对象。

getContext()方法概述:public ServletContext getContext(java.lang.String uripath)
返回一个指定URL地址的ServletContext对象。
该方法允许servlets获得对服务器的各部分上下文的访问权,并根据需要从上下文获得RequestDispatcher对象。这个指定的URL路径必须带有"/",被解释为服务器文档根目录下的相对路径,并跟其它web-app主机的上下文根目录匹配。
在一个安全的环境下,servlet容器会返回null。

getMajorVersion()方法概述:public int getMajorVersion()
返回servlet容器支持的Servlet API的版本号,所有实现都必须返回整型数2。

getMinorVersion()方法略。

getMimeType()方法概述:public java.lang.String getMimeType(java.lang.String file)
返回指定文件的文件类型,如果文件类型未知,则返回null。文件类型由servlet容器的配置决定并在一个web-app中被指定。一般情况下的文件类型是:"text/html" 和"image/gif"。

getResourcePaths()方法概述:public java.util.Set getResourcePaths(java.lang.String path)
返回一个存储web-app中所有资源路径的Set(集合)。
路径以”/"结尾表示一个子目录,并以"/"开头表示一个对于web-app的相对路径。

例子:
/welcome.html
/catalog/index.html
/catalog/products.html
/catalog/offers/books.html
/catalog/offers/music.html
/customer/login.jsp
/WEB-INF/web.xml
/WEB-INF/classes/com.acme.OrderServlet.class,

getResourcePaths("/") 将返回Set {"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"};
getResourcePaths("/catalog/") 将返回Set {"/catalog/index.html", "/catalog/products.html", "/catalog/offers/"}。

如果子目录为空,返回null。


getResource()方法概述:public java.net.URL getResource(java.lang.String path) throws java.net.MalformedURLException
返回由path指定的资源路径对应的一个URL对象,该path必须以“/"开头并作为当前目录的相对位置。
该方法允许servlet容器使serlets中的一个资源变为可用。该资源允许是一个本地资源或者是一个远程文件系统,这些资源可以在数据库中,或者在一个.war文件中。
servlet容器必须实现URL句柄和URLCOnnection对象,这些对象对于资源访问是必需的。
如果没有匹配的资源,该方法返回null。
某些容器甚至可以向该方法所返回的资源写数据。
这个资源可以直接返回,所以请求一个a.jsp文件将返回JSP源文件。用一个RequestDispatcher对象取而代之,可以包含执行的结果。
这个方法功能有别于java.lang.Class.getResource,一个基于class loader检索资源的方法。但前者不依赖于class loaders。

getResourceAsStream()方法概述:public java.io.InputStream getResourceAsStream(java.lang.String path)
返回一个由String path指定位置资源的InputStream。返回的InputStream可以是任意类型和长度的。

getRequestDispatcher()方法概述:public RequestDispatcher getRequestDispatcher(java.lang.String path)
返回一个RequestDispatcher对象,该对象扮演着一个给定资源包装者的角色。一个RequestDispatcher对象可以用于传送一个请求到特定资源或者把特定资源包含到一个响应当中。该特定资源可以是动态的也可以是静态的。
通过getContext()方法可以为外部contexts资源获取RequestDispatcher对象。如果ServletContext不能获取RequestDispatcher对象,返回null。

getNamedDispatcher()方法概述:public RequestDispatcher getNamedDispatcher(java.lang.String name)
为 指定名字的servlet对象返回一个RequestDispatcher对象。Servlet和JSP页面可以通过服务器管理或web application deployment descriptor被命名。一个Servlet实例的名称可以由ServletConfig.getServletName()决定。

getServlet()方法、getServlets()方法、getServletNames()方法,不推荐使用。

log(java.lang.String msg)方法概述:public void log(java.lang.String msg)
把指定的信息写进servlet日志文件,通常是事物日志。日志文件的名称和类型与servlet容器有关。

public void log(java.lang.Exception exception,java.lang.String msg) 略
public void log(java.lang.String message,java.lang.Throwable throwable) 略

getRealPath()方法概述:public java.lang.String getRealPath(java.lang.String path)
返回一个指定虚拟路径的真实路径(完整路径)的字符串。
举例:虚拟路径"/index.html"将返回服务器文件系统中的绝对路径"http://host/contextPath/index.html", 当中的contextPath是ServletContext的上下文路径。
返回的路径将适用于servlet容器所运行的操作系统。假如无法把虚拟路径映射为真实路径,该方法将返回null。(比如当路径指定的内容是源于.war文件)

getServerInfo()方法概述:public java.lang.String getServerInfo()
返回servlet容器的名称和版本号。
返回的字符串格式是servername/versionnumber(服务器名/版本号),例如:the JavaServer Web Development Kit 将返回字符串”JavaServer Web Dev Kit/1.0”。
servlet容器还将返回其它可选信息,如:“JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86)”

getInitParameter()方法概述:public java.lang.String getInitParameter(java.lang.String name)
返回上下文定义的变量的值,如果变量不存在,返回null。
见ServletConfig.getInitParameter(java.lang.String)。

getInitParameterNames()方法概述:public java.util.Enumeration getInitParameterNames()
返回上下文定义的所以变量的枚举函数,如果空则返回空枚举函数。

getAttribute()方法概述:public java.lang.Object getAttribute(java.lang.String name)
返回指定名字的servlet容器变量值,如果无该变量则返回null。

getAttributeNames()方法概述:public java.util.Enumeration getAttributeNames()
返回servlet容器的所有变量的枚举函数,如果空则返回空枚举函数。

setAttribute()方法概述:public void setAttribute(java.lang.String name,java.lang.Object object)
在servlet容器内绑定一个指定对象给一个指定的名字。如果该名字已经绑定到一个对象,则用该对象覆盖之。
If listeners are configured on the ServletContext the container notifies them accordingly. (不会翻译,求助)
如果传递一个null值,则相当于调用removeAttribute()。

removeAttribute()方法概述:public void removeAttribute(java.lang.String name)
移除指定名字的servlet容器变量。

getServletContextName()方法概述:public java.lang.String getServletContextName()
返回web application的名字。

最后,见Servlet.getServletConfig(), ServletConfig.getServletContext()