1.web.xml中配置
<!-- 加载配置文件 --> <listener> <description>ServletContextListener</description> <listener-class>com.lanhetech.application.ContextInitListener</listener-class> </listener> |
2.加载
import java.io.FileInputStream;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Properties;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.log4j.Logger;// 加载配置文件到application中// test -- okpublic class ContextInitListener implements ServletContextListener { private static Logger logger = Logger.getLogger(ContextInitListener.class); // web项目通常来说,一般来说相对路径是在/WEB-INF目录下 private static final String BUSINESS_LOGIC_CONFIG_FILE_NAME = "business_logic.properties"; // 业务逻辑的配置文件名 @Override public void contextDestroyed(ServletContextEvent arg0) { logger.info("自定义加载配置文件监听器销毁!"); } @Override public void contextInitialized(ServletContextEvent contextEvent) { logger.info("自定义加载配置文件监听器初始化!"); // 1.装载配置文件 Map<String, String> configsMap = this.loadBusinessLogicConfig(contextEvent); // 2.将配置加载到内存中Application this.loadConfigToApplication(contextEvent, configsMap); logger.info("自定义加载配置文件监听器初始化!完成!"); } // 装载配置文件 private Map<String, String> loadBusinessLogicConfig(ServletContextEvent contextEvent) { logger.info("开始装载配置文件!"); // 加载配置文件 Properties props = new Properties(); try { String web_inf = contextEvent.getServletContext().getRealPath("/WEB-INF"); // 防止转义 String loadPath = web_inf + "//" + BUSINESS_LOGIC_CONFIG_FILE_NAME; logger.info("加载配置文件路径:" + loadPath); props.load(new FileInputStream(loadPath)); } catch (Exception ex) { logger.error("加载配置文件失败!!!!"); return null; } // 解析配置文件 Map<String, String> map = new HashMap<String, String>((Map) props); logger.info("开始装载配置文件!完成!"); return map; } // 将配置加载到内存中Application private void loadConfigToApplication(ServletContextEvent contextEvent, Map<String, String> configsMap) { logger.info("开始写入配置到内存中!"); if (configsMap == null) { logger.error("配置参数为null,写入失败!!!"); return; } // 将配置文件里的值装入context属性,这样可以在JSP,SERVLET里调用 ServletContext context = contextEvent.getServletContext(); for (Entry<String, String> entry : configsMap.entrySet()) { logger.info("写入的key:" + entry.getKey() + " value:" + entry.getValue()); context.setAttribute(entry.getKey(), entry.getValue()); } logger.info("开始写入配置到内存中!完成!"); }} |
3.Spring中使用:
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); ServletContext servletContext = webApplicationContext.getServletContext(); logger.info("info获取请求:用户登录方法执行!"+ servletContext.getAttribute("sm2_sign_ip"));web 中加载配置文件
原文地址:https://www.cnblogs.com/H-BolinBlog/p/8276213.html