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"));

最新文章

  1. Eclipse启动时发生An internal error occurred during: &quot;Initializing Java Tooling&quot;.错误的解决方法
  2. SAX与DOM
  3. Android ImageView高度根据图片比例自适应
  4. strust.xml
  5. Regularization on GBDT
  6. Effective Java 48 Avoid float and double if exact answers are required
  7. MySQL忘记密码后重置密码(Mac )
  8. HDU 5763 Another Meaning(FFT)
  9. 笔记整理--socket_server
  10. JDBC开源框架:DBUtils使用入门
  11. LDAP apacheds解决方案
  12. 一本通 一笔画问题 洛谷P1636 Einstein学画画
  13. Erdos
  14. Python中关于列表嵌套列表的处理
  15. CRM项目之stark组件(1)
  16. chrome\IE\Firefox驱动下载地址
  17. self.xxx = nil 可以等效于[_xxx release] _xxx= nil 么
  18. [SQL] 命令远程恢复数据库
  19. 非线性方程(组):MATLAB内置函数 solve, vpasolve, fsolve, fzero, roots [MATLAB]
  20. 浅谈Comparable与Comparator的区别

热门文章

  1. C# 程序Hello World
  2. ViewPager使用--文章集锦
  3. 使用Word2010发布博客文章
  4. java类中获取WEB-INF路径
  5. TDS开启log TDS开启SSL
  6. [bzoj3223]文艺平衡树——splay
  7. Linux 开机自动挂载windows分区
  8. DDCTF - evil 一个伪装成docx的exe
  9. busybox syslog介绍
  10. 【转】使用者角度看bionic pthread_mutex和linux futex实现