使用ConfigurationFactory加载context-param中的配置文件

web.xml里面可以定义两种参数:
(1)application范围内的参数,存放在servletcontext中,在web.xml中配置如下:

<context-param>
           <param-name>configUrl</param-name>
           <param-value>avalible during application</param-value>
  </context-param>

 
   用getServletContext().getInitParameter("configUrl"))获取

(2)servlet内的初始化参数,,在web.xml中配置如下:

<servlet>
    <servlet-name>MainServlet</servlet-name>
    <servlet-class>com.wes.controller.MainServlet</servlet-class>
    <init-param>
       <param-name>param1</param-name>
       <param-value>avalible in servlet init()</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>

 

只能在servlet的init()方法中用this.getInitParameter("param1"));得到

 

使用ConfigurationFactory获取参数:

ConfigurationFactory(String configurationFileName)
    //The path to the configuration file
    //此处path是绝对路径,所以必须context.getRealPath(..);

 例子:
web.xml中:

<context-param>
        <param-name>configUrl</param-name>
        <param-value>WEB-INF/config.xml</param-value>
     </context-param>

 

WEB-INF  -> config.xml中:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <xml fileName="config/AbacusCfg.xml" />
        <xml fileName="config/emailconfig.xml" />
        <properties fileName="global.properties"/>
    </configuration>

 

WEB-INF -> config -> emailconfig.xml:

 <?xml version="1.0" encoding="UTF-8"?>  
 <Config>  
        <b2bEmail>  
           <receiver>112@126.com.hk;</receiver>  
        </b2bEmail>  
        <packageb2cemail>  
           af@126.com.hk;alex@126.com.hk  
        </packageb2cemail>  
        ...  
</Config>

 

 启动时在contextInitialized()方法中获取配置文件:

this.context = sce.getServletContext();    //ServletContextEvent sce
    String path = this.context.getRealPath(this.context.getInitParameter("configUrl"));

    ConfigurationFactory factory = new ConfigurationFactory(path);
    Configuration config = factory.getConfiguration();
    this.context.setAttribute(MyConstants.CONFIGURATION_KEY, config);
    this.context.setAttribute(MyConstants.GOOGLE_MAP_KEY, config.getString("packageb2cemail"));
    //String bkemail = config.getString("b2bEmail.receiver");

 。。。

 

 

你可能感兴趣的:(xml,Web,servlet,Google)