ServletContext接口

每个Web应用程序都是一个独立的Servlet容器,每个Web应用程序分别用一个ServletContext对象来表示,ServletContext接口定义了ServletContext对象需要对外提供的方法,Servlet程序通过这些方法与Servlet容器进行通信。

获取ServletContext对象

前面讲了ServletConfig接口的使用,该接口中提供了如下方法

public ServletContext getServletContext() {
    return this.getServletConfig().getServletContext();
}

ServletContext接口的实现类由Servlet容器提供。

配置和获取WEB应用程序的初始化参数

在ServletConfig接口的使用 中讲到了如何在web.xml文件中配置一个Servlet程序的初始化参数,这些初始化参数是在标签下配置的,是隶属于某一个指定的Servlet类的。

我们可以在server.xmlweb.xml配置文件中配置WEB应用程序的初始化参数,这些参数是针对这个WEB应用程序的,也就是说,该WEB应用程序下的所有Servlet程序都可以获取这些参数。

在server.xml中的配置

在Tomcat基础中讲了如何设置web站点的根目录,通过在servler.xml文件中的标签下配置标签可以配置映射到本地的根目录:


            

如果我们要配置该WEB站点的初始化信息,可以在标签下添加标签进行配置:


         

override属性用于指定在Web应用程序中的web.xml文件设置的同名初始化参数是否覆盖这里的设置。默认值为true,表示可以覆盖。

在web.xml中的配置

在跟元素标签下添加标签:


  
   companyName
   Flash_haha
  

获取配置的初始化参数

通过ServletContext中的下列方法获取:

String getInitParameter(String var1);

Enumeration getInitParameterNames();

application域范围的属性

由于一个Web应用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext对象被称之为application对象(Web应用程序对象)。application对象(ServletContext对象)内部有一个哈希表集合对象,存储进application对象内的哈希表集合对象中的每对键值对都被称为application对象的属性。这些属性能被每一个Servlet程序所访问。

ServletContext接口定义的操作属性的方法:

Object getAttribute(String var1);

Enumeration getAttributeNames();

void setAttribute(String var1, Object var2);

void removeAttribute(String var1);

访问资源文件

ServletContext接口中国定义的相关方法:


Set getResourcePaths(String var1);

URL getResource(String var1) throws MalformedURLException;

InputStream getResourceAsStream(String var1);
  • getResourcePaths方法
    参数必须以/起始。
    如果Web应用程序的目录如下:
    /welcome.html
    /WEB-INF/web.xml
    那么,getResourcePaths("/")返回的是["/welcome.html", "/WEB-INF/"],getResourcePaths("/WEB-INF/")返回的是["/WEB_INF/web.xml"]。

  • getResource()方法
    返回映射到某个资源上的URL对象。

  • getResourceAsStream()方法
    返回连接到某个资源上的InputStream对象。

获取虚拟路径所映射的本地路径

ServletContext接口中定义:

String getRealPath(String var1);

参数用法和getResourcePaths一致。

参考:
张孝祥《Java Web基础》

你可能感兴趣的:(ServletContext接口)