zoukankan      html  css  js  c++  java
  • web 中加载配置文件

    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 -- ok
    public 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"));
  • 相关阅读:
    WIN10修改桌面路径到(其他盘)教程
    C#通过IMessageFilter捕获鼠标消息
    C# ICON和Image互转
    由于找不到 opencv_world320.dll,无法继续执行代
    HttpWebRequest.Connection的问题
    远程服务器环境调用本地JS启动摄像头功能遇见的问题
    nginx反向代理配置
    获取开源天气信息的API
    Java实现八种排序算法(代码详细解释)
    Java面试之前复习总结(二)
  • 原文地址:https://www.cnblogs.com/H-BolinBlog/p/8276213.html
Copyright © 2011-2022 走看看