美文网首页
ServletContext接口

ServletContext接口

作者: 禅与发现的乐趣 | 来源:发表于2018-06-12 11:29 被阅读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);
    
    • 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接口

          本文链接:https://www.haomeiwen.com/subject/sweleftx.html