ServletContext接口

2018-06-12  本文已影响11人  禅与发现的乐趣

每个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>标签下配置的,是隶属于某一个指定的Servlet类的。

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

在server.xml中的配置

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

<Host name="localhost" appBase="webapps"
            unpackWARs="true" autoDeploy="true">
            <Context path="" docBase="/Users/oyty/Documents/webtest" debug="0" reloadable="true" />
</Host>

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

<Context path="" docBase="/Users/oyty/Documents/webtest" debug="0" reloadable="true" >
         <Parameter name="companyName" valve="Flash" override="false"/>
</Context>

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

在web.xml中的配置

在跟元素<web-app>标签下添加<context-param>标签:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee">
  <context-param>
   <param-name>companyName</param-name>
   <param-value>Flash_haha</param-value>
  </context-param>
</web-app>
获取配置的初始化参数

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

String getInitParameter(String var1);

Enumeration<String> getInitParameterNames();

application域范围的属性

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

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

Object getAttribute(String var1);

Enumeration<String> getAttributeNames();

void setAttribute(String var1, Object var2);

void removeAttribute(String var1);

访问资源文件

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


Set<String> getResourcePaths(String var1);

URL getResource(String var1) throws MalformedURLException;

InputStream getResourceAsStream(String var1);

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

ServletContext接口中定义:

String getRealPath(String var1);

参数用法和getResourcePaths一致。

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

上一篇下一篇

猜你喜欢

热点阅读