在javax.servlet包中,定义了ServletConfig接口。Servlet容器使用ServletConfig对象在Servlet初始化期间向它传递配置信息,一个
Servlet只有一个ServletConfig对象。在这个接口中,定义了下面四个方法:
public java.lang.String getInitParameter(java.lang.String name)
返回名字为name的初始化参数的值,初始化参数在web.xml配置文件中进行配置。如果参数不存在,这个方法将返回null。
public java.util.Enumeration getInitParameterNames()
返回Servlet所有初始化参数的名字的枚举集合。如果Servlet没有初始化参数,这个方法将返回一个空的枚举集合。
public ServletContext getServletContext()
返回Servlet上下文对象的引用,关于ServletContext的使用,请参见第下面的ServletContext接口详解。
public java.lang.String getServletName()
返回Servlet实例的名字。这个名字是在Web应用程序的部署描述符中指定的。如果是一个没有注册的Servlet实例,这个方法返回的将是Servlet的类名。
ServletContext接口详解
一个ServletContext对象表示了一个Web应用程序的上下文。Servlet容器在Servlet初始化期间,向其传递 ServletConfig对象,可以通过ServletConfig对象的getServletContext()方法来得到 ServletContext对象。也可以通过GenericServlet类的getServletContext()方法得到 ServletContext对象,不过GenericServlet类的getServletContext()也是调用ServletConfig对象的getServletContext()方法来得到这个对象的。
ServletContext接口定义了下面的这些方法,Servlet容器提供了这个接口的实现。
public java.lang.Object getAttribute(java.lang.String name)
public java.util.Enumeration getAttributeNames()
public void removeAttribute(java.lang.String name)
public void setAttribute(java.lang.String name, java.lang.Object object)
上面4个方法用于读取、移除和设置共享属性,任何一个Servlet都可以设置某个属性,而同一个Web应用程序的另一个Servlet可以读取这个属性,不管这些Servlet是否为同一个客户进行服务。
public ServletContext getContext(java.lang.String uripath)
该方法返回服务器上与指定的URL相对应的ServletContext对象。给出的uripath参数必须以斜杠(/)开始,被解释为相对于服务器文档根的路径。出于安全方面的考虑,如果调用该方法访问一个受限制的ServletContext对象,那么该方法将返回null。
public String getContextPath()
该方法是在Servlet 2.5规范中新增的,用于返回Web应用程序的上下文路径。上下文路径总是以斜杠(/)开头,但结束没有斜杠(/)。在默认(根)上下文中,这个方法返回空字符串""。
public java.lang.String getInitParameter(java.lang.String name)
public java.util.Enumeration getInitParameterNames()
可以为Servlet上下文定义初始化参数,这些参数被整个Web应用程序所使用。可以在部署描述符(web.xml)中使用<context-param>元素来定义上下文的初始化参数,上面两个方法用于访问这些参数。
public int getMajorVersion()
public int getMinorVersion()
上面两个方法用于返回Servlet容器支持的Java Servlet API的主版本和次版本号。例如,对于遵从Servlet 2.4版本的容器,getMajorVersion()方法返回2,getMinorVersion()方法返回4。
public java.lang.String getMimeType(java.lang.String file)
该方法返回指定文件的MIME类型,如果类型是未知的,这个方法将返回null。MIME类型的检测是根据Servlet容器的配置,也可以在Web应用程序的部署描述符中指定。
public RequestDispatcher getRequestDispatcher(java.lang.String path)
该方法返回一个RequestDispatcher对象,作为指定路径上的资源的封装。可以使用RequestDispatcher对象将一个请求转发(forward)给其他资源进行处理,或者在响应中包含(include)资源。要注意的是,传入的参数path必须以斜杠(/)开始,被解释为相对于当前上下文根(context root)的路径。
public RequestDispatcher getNamedDispatcher(java.lang.String name)
该方法与getRequestDispatcher()方法类似。不同之处在于,该方法接受一个在部署描述符中以<servlet-name>元素给出的Servlet(或JSP页面)的名字作为参数。
public java.lang.String getRealPath(java.lang.String path)
在一个Web应用程序中,资源用相对于上下文路径的路径来引用,这个方法可以返回资源在服务器文件系统上的真实路径(文件的绝对路径)。返回的真实路径的格式应该适合于运行这个Servlet容器的计算机和操作系统(包括正确的路径分隔符)。如果Servlet容器不能够将虚拟路径转换为真实的路径,这个方法将会返回null。
public java.net.URL getResource(java.lang.String path)
throws java.net.Malformed URLException
该方法返回被映射到指定路径上的资源的URL。传入的参数path必须以斜杠(/)开始,被解释为相对于当前上下文根(context root)的路径。这个方法允许Servlet容器从任何来源为Servlet生成一个可用的资源。资源可以是在本地或远程文件系统上,在数据库中,或者在WAR文件中。如果没有资源映射到指定的路径上,该方法将返回null。
public java.io.InputStream getResourceAsStream(java.lang.String path)
该方法与getResource()方法类似,不同之处在于,该方法返回资源的输入流对象。另外,使用getResourceAsStream()方法,元信息(如内容长度和内容类型)将丢失,而使用getResource()方法,元信息是可用的。
public java.util.Set getResourcePaths(java.lang.String path)
该方法返回资源的路径列表,参数path必须以斜杠(/)开始,指定用于匹配资源的部分路径。例如,一个Web应用程序包含了下列资源:
/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("/"),将返回[/welcome.html, /catalog/, /customer/, /WEB-INF/]。如果调用getResourcePaths("/catalog/"),将返回[/catalog/index.html, /catalog/products.html, /catalog/offers/]。
public java.lang.String getServerInfo()
该方法返回运行Servlet的容器的名称和版本。
public java.lang.String getServletContextName()
该方法返回在部署描述符中使用<display-name>元素指定的对应于当前ServletContext的Web应用程序的名称。
public void log(java.lang.String msg)
public void log(java.lang.String message,
java.lang.Throwable throwable)
ServletContext接口提供了上面两个记录日志的方法,第一个方法用于记录一般的日志,第二个方法用于记录指定异常的栈跟踪信息