0
我知道有一个名为web.xml的配置文件 我想实现的是另一个具有应用程序特定配置的配置文件,它必须在Web服务器启动时读取。我也希望一个类能够读取这个配置。有没有一种方法可以配置这是web.xml文件本身还是有另一种方式如何在eclipse动态web项目中读取配置文件?
我知道有一个名为web.xml的配置文件 我想实现的是另一个具有应用程序特定配置的配置文件,它必须在Web服务器启动时读取。我也希望一个类能够读取这个配置。有没有一种方法可以配置这是web.xml文件本身还是有另一种方式如何在eclipse动态web项目中读取配置文件?
您可以使用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()); \t \t \t Configuration config = new XMLConfiguration(configFile); System.out.println(“根元素名称:”+ config.getString(“application.name”)); 该语句返回null。我的xml结构是:学院 application> –