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

web 中加载配置文件的更多相关文章

  1. Spring中加载配置文件的方式

    原文:http://blog.csdn.net/snowjlz/article/details/8158560 Spring 中加载XML配置文件的方式,好像有3种, XML是最常见的Spring 应 ...

  2. Java中加载配置文件的集中方式,以及利用ClassLoader加载文件 .

    我们往常进行文件的加载的时候 用到的都是  FileInputStream进行 文件的加载比如下面一个例子 : InputStream in=FileInputStream("1.prope ...

  3. spring controller中@Value取不到applicationContext.xml中加载配置文件的问题

    原因还未查证: http://sunjun041640.blog.163.com/blog/static/256268322014127113844746/ 在使用spring mvc时,实际上是两个 ...

  4. .Net Core Web应用加载读取Json配置文件

    ⒈添加Json配置文件并将“复制到输出目录”属性设置为“始终复制” { "Logging": { "LogLevel": { "Default&quo ...

  5. 想要配置文件生效 需要通过添加到web.xml加载到内存中

    想要配置文件生效 需要通过添加到web.xml加载到内存中

  6. spring的配置文件在web.xml中加载的方式

    web.xml加载spring配置文件的方式主要依据该配置文件的名称和存放的位置不同来区别,目前主要有两种方式. 1.如果spring配置文件的名称为applicationContext.xml,并且 ...

  7. Spring中加载xml配置文件的六种方式

    Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog  因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...

  8. unreal3对象属性自动从配置文件中加载的机制

    unrealscript中有两个与属性自动配置相关的关键字: config/globalconfig 当把它们应用于属性时,对象在创建后,该属性的初始值会被自动设置为相对应ini文件中的值. 举例来说 ...

  9. springboot属性类自动加载配置文件中的值

    springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,p ...

随机推荐

  1. 对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)

    本文属于本人原创,转载请注明出处:http://blog.csdn.net/xxd851116/archive/2009/06/25/4296866.aspx [前面的话] 在网上经常看到有人对req ...

  2. JAVA【一】

    1,abstract可以修饰什么?为什么不能修饰属性 --abstract是抽象的意思,在java中,规定只能修饰类或者方法,所以不能修饰属性. (1)abstract修饰类,会使这个类成为一个抽象类 ...

  3. HDFS 的Trash回收站

    1)在core-site.xml文件中添加这个配置 在每个节点(不仅仅是主节点)上添加配置 core-site.xml,增加如下内容 <property> <name>fs.t ...

  4. 计算n阶行列式的模板

    之前在学习计数问题的时候也在网上找了很多关于行列式的资料 但是发现很多地方都只介绍2\3阶的情况 一些论文介绍的方法又看不懂 然后就一直耽搁着 今天恰好出到这样的题目 发现标算的代码简介明了 还挺开心 ...

  5. [bzoj1208][HNOI2004]宠物收养所——splay

    题目大意 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发 ...

  6. github 下载某一文件夹

    作者:知乎用户链接:https://www.zhihu.com/question/25369412/answer/96174755来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  7. camera摄像原理之三:色温和自动白平衡【转】

    转自:http://blog.csdn.net/ghostyu/article/details/7912863 色温的定义:将黑体从绝对零度开始加温,温度每升高一度称为1开氏度(用字母K表示),当温度 ...

  8. 【C语言】一次内存泄露的分析的记录

    今天运行一个程序,程序刚启动时占用内存很小,在运行过程中发现占用的内存会一直增大. 用cat /proc/pid/statm的方式查看发现也确实在一直增大. 而且这个程序移植到另外一个平台后,会直接无 ...

  9. 常见协议基础知识总结--FTP协议

    FTP协议是一种基于客户端和服务器的文件传输协议,属于应用层协议,基于传输层的TCP协议: FTP主要分成主动模式和被动模式两种传输方式, 方式是相对服务器而言的,服务器主动发起数据连接即主动方式,使 ...

  10. measure time program

    #include <time.h> int delay(int time) { int i,j; for(i =0;i<time;i++) for(j=0;j<10000;j+ ...