java - 如何读取eclipse动态web项目中的配置文件?

标签 java servlets configuration web web.xml

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

最佳答案

您可以使用 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。该类将简单地通过静态方法提供对配置的访问。

关于java - 如何读取eclipse动态web项目中的配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469090/

相关文章:

Java:(int) double 可靠吗?

java - 适用于所有服务器请求类型的单个 servlet 与多个 servlet——每种请求类型对应一个

javascript - Node-config 全局配置

python - 即使在创建新应用时 Gunicorn 也会超时

java - 构建包含多个类的 Jar 文件

Java Matcher.find $ 在单行模式下匹配换行符

java - Android:FragmentManager 版本不匹配

java - Tomcat 只允许我下载 servlet

java - java-ee中if语句的逻辑问题

ruby-on-rails-3 - 运行 rspec 时隐藏文件列表?