Java Web从入门到精通(第2版)
上QQ阅读APP看书,第一时间看更新

6.5 application对象

视频讲解:光盘\TM\lx\6\05 application对象.mp4

application对象用于保存所有应用程序中的公有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享该application对象。与session对象相比,application对象的生命周期更长,类似于系统的“全局变量”。

6.5.1 访问应用程序初始化参数

application对象提供了对应用程序初始化参数进行访问的方法。应用程序初始化参数在web.xml文件中进行设置,web.xml文件位于Web应用所在目录下的WEB-INF子目录中。在web.xml文件中通过<context-param>标记配置应用程序初始化参数。

【例6.19】在web.xml文件中配置连接MySQL数据库所需的url参数。代码如下:

              ...
          <context-param>
              <param-name>url</param-name>
              <param-value>jdbc:mysql://127.0.0.1:3306/db_database</param-value>
          </context-param>
        </web-app>

application对象提供了两种访问应用程序初始化参数的方法,下面分别进行介绍。

getInitParameter()方法

该方法用于返回已命名的参数值。其语法格式如下:

        application.getInitParameter(String name);

参数说明:

name:用于指定参数名。

【例6.20】获取上面web.xml文件中配置的url参数的值,可以使用下面的代码:

        application.getInitParameter("url");

getAttributeNames()方法

该方法用于返回所有已定义的应用程序初始化参数名的枚举。其语法格式如下:

        application.getAttributeNames();

【例6.21】应用getAttributeNames()方法获取web.xml中定义的全部应用程序初始化参数名,并通过循环输出。示例代码如下:

        <%@page import="java.util.*"%>
        <%
        Enumeration enema=application.getInitParameterNames();   //获取全部初始化参数
        while(enema.hasMoreElements()){
            String name=(String)enema.nextElement();             //获取参数名
            String value=application.getInitParameter(name);     //获取参数值
            out.println(name+":");                               //输出参数名
            out.println(value);                                  //输出参数值
        }
        %>

如果在web.xml文件中只包括一个上面添加的url参数,执行上面的代码将显示以下内容:

        url: jdbc:mysql://127.0.0.1:3306/db_database

6.5.2 管理应用程序环境属性

与session对象相同,也可以在application对象中设置属性。与session对象不同的是,session只是在当前客户的会话范围内有效,当超过保存时间,session对象就被收回;而application对象在整个应用区域中都有效。application对象管理应用程序环境属性的方法分别介绍如下。

getAttributeNames():获得所有application对象使用的属性名。

getAttribute(String name):从application对象中获取指定对象名。

setAttribute(String key, Object obj):使用指定名称和指定对象在application对象中进行关联。

removeAttribute(String name):从application对象中去掉指定名称的属性。