【问题标题】:How to read a configuration file in eclipse dynamic web project?如何在 Eclipse 动态 Web 项目中读取配置文件?
【发布时间】:2012-05-15 04:39:27
【问题描述】:

我知道有一个配置文件叫web.xml 我想要实现的是拥有另一个具有应用程序特定配置的配置文件,并且必须在启动 Web 服务器时读取它。我还希望一个类能够读取此配置。有没有办法我可以配置这是 web.xml 文件本身还是有另一种方式

【问题讨论】:

    标签: java servlets configuration web web.xml


    【解决方案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。该类将简单地通过静态方法提供对配置的访问。

    【讨论】:

    • 我执行以下操作来访问我加载的 xml 文件:configFile = new File(context.getResource("/WEB-INF/academy.xml").getPath());配置 config = new XMLConfiguration(configFile); System.out.println("根元素名称:"+config.getString("application.name"));此语句返回 null。我的 xml 结构是:Academy
    猜你喜欢
    • 2012-10-05
    • 2014-02-06
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2021-01-15
    • 2011-09-10
    • 1970-01-01
    • 2011-09-15
    相关资源
    最近更新 更多