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 -- 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 中加载配置文件的更多相关文章
- Spring中加载配置文件的方式
原文:http://blog.csdn.net/snowjlz/article/details/8158560 Spring 中加载XML配置文件的方式,好像有3种, XML是最常见的Spring 应 ...
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件 .
我们往常进行文件的加载的时候 用到的都是 FileInputStream进行 文件的加载比如下面一个例子 : InputStream in=FileInputStream("1.prope ...
- spring controller中@Value取不到applicationContext.xml中加载配置文件的问题
原因还未查证: http://sunjun041640.blog.163.com/blog/static/256268322014127113844746/ 在使用spring mvc时,实际上是两个 ...
- .Net Core Web应用加载读取Json配置文件
⒈添加Json配置文件并将“复制到输出目录”属性设置为“始终复制” { "Logging": { "LogLevel": { "Default&quo ...
- 想要配置文件生效 需要通过添加到web.xml加载到内存中
想要配置文件生效 需要通过添加到web.xml加载到内存中
- spring的配置文件在web.xml中加载的方式
web.xml加载spring配置文件的方式主要依据该配置文件的名称和存放的位置不同来区别,目前主要有两种方式. 1.如果spring配置文件的名称为applicationContext.xml,并且 ...
- Spring中加载xml配置文件的六种方式
Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog 因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...
- unreal3对象属性自动从配置文件中加载的机制
unrealscript中有两个与属性自动配置相关的关键字: config/globalconfig 当把它们应用于属性时,对象在创建后,该属性的初始值会被自动设置为相对应ini文件中的值. 举例来说 ...
- springboot属性类自动加载配置文件中的值
springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,p ...
随机推荐
- word使用宏 在文章中插入源代码进行排版
1.宏的代码如下. Sub 设置代码表格() ' author: code4101 ' 设置代码表格 宏 ' ' ' 背景色为morning的配色方案,RGB为(229,229,229) ) With ...
- IDEA新建时选项没有java class问题
解决办法: 点击你的project F4打开project stucture 点击左边的module 点击右边的source后添加src就可以了 添加的src就是源码可以放置的地址
- compositionstart 、 compositionend 、 input都存在时的解决办法
$(function () { var cpLock = true; $('#textbox').off().on({ compositionstart: function () {//中文输入开始 ...
- python常用模块补充hashlib configparser logging,subprocess模块
一.hashlib模板 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定 ...
- Kuangbin 带你飞-线段树专题 题解
HDU 1166 敌兵布阵 单调更新区间查询和 #include <map> #include <set> #include <list> #include < ...
- gcc升级方法
https://www.cppfans.org/1719.html 默认链接到 /usr/local/bin/gcc,需要链接一下,替换默认的低版本 ln -s /usr/local/bin/gcc ...
- cpu事实负载使用top命令
参考网址:http://www.cnblogs.com/tippoint/archive/2013/03/05/2944319.html 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据 ...
- HTML5 拖拽事件
dragstart:拖拽开始 drag: 拖拽中,会不停的触发 dragend:拖拽结束 ondraglevea:有元素离开了本元素 ondragenter:有元素进入了本元素 ondragover: ...
- python中的enumerate使用
enumerate函数用于遍历序列中的元素以及它们的下标,多用于在for循环中得到计数,enumerate参数为可遍历的变量,如 字符串,列表等 一般情况下对一个列表或数组既要遍历索引又要遍历元素时, ...
- normalize.css v2.1.2 翻译
/*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* /*! 我就是自己看看,然后翻译下下,让大家看看 */ /* ===== ...