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