2012-05-06 71 views
0

我知道有一个名为web.xml的配置文件 我想实现的是另一个具有应用程序特定配置的配置文件,它必须在Web服务器启动时读取。我也希望一个类能够读取这个配置。有没有一种方法可以配置这是web.xml文件本身还是有另一种方式如何在eclipse动态web项目中读取配置文件?

回答

1

您可以使用Apache Commons配置。看看user guide。既然你希望它在启动时完成这里是一个样本的ServletContextListener:

package test; 

import java.io.File; 
import java.net.MalformedURLException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.servlet.ServletContext; 
import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 
import org.apache.commons.configuration.Configuration; 
import org.apache.commons.configuration.ConfigurationException; 
import org.apache.commons.configuration.XMLConfiguration; 

public class ConfigurationListener implements ServletContextListener { 

    @Override 
    public void contextInitialized(ServletContextEvent sce) { 
     ServletContext context = sce.getServletContext(); 
     File configFile; 

     try { 
      configFile = new File(context.getResource("/WEB-INF/configuration.xml").getPath()); 
      Configuration config = new XMLConfiguration(configFile); 
      context.setAttribute("configuration", config); 
     } catch (ConfigurationException | MalformedURLException ex) { 
      Logger.getLogger(ConfigurationListener.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent sce) {} 
} 

现在把你的配置在Web应用程序中像这样:

Configuration config = (Configuration) request.getServletContext().getAttribute("configuration"); 

我将创建一个类来保存配置尽管不是将它作为一个属性添加到ServletContext中。该类仅通过静态方法提供对配置的访问。

+0

我做了以下操作来访问我加载的xml文件: configFile = new File(context.getResource(“/ WEB-INF/academy.xml”).getPath()); \t \t \t Configuration config = new XMLConfiguration(configFile); System.out.println(“根元素名称:”+ config.getString(“application.name”)); 该语句返回null。我的xml结构是: 学院

相关问题