将properties文件的配置设置为整个Web应用的全局变量实现方法
四大作用域:
Web应用中的变量存放在不同的jsp对象中,会有不一样的作用域,四种不同的作用域排序是pageContext 1、pageContext:页面域,仅当前页面有效,离开页面后,不论重定向还是转向(即无论是redirect还是forward),pageContext的属性值都失效; 2、request:请求域,在一次请求中有效,如果用forward转向,则下一次请求还可以保留上一次request中的属性值,而redirect重定向跳转到另一个页面则会使上一次request中的属性值失效; 3、session:会话域,在一次会话过程中(从浏览器打开到浏览器关闭这个过程),session对象的属性值都保持有效,在这次会话过程,session中的值可以在任何页面获取; 4、application:应用域,只要应用不关闭,该对象中的属性值一直有效,并且为所有会话所共享。 利用ServletContextListener监听器,一旦应用加载,就将properties的值存储到application当中 现在需要在所有的jsp中都能通过EL表达式读取到properties中的属性,并且是针对所有的会话,故这里利用application作用域, 那么什么时候将properties中的属性存储到application呢?因为是将properties的属性值作为全局的变量以方便任何一次EL的获取,所以在web应用加载的时候就将值存储到application当中, 这里就要利用ServletContextListener: ServletContextListener是ServletAPI中的一个接口,它能够监听ServletContext对象的生命周期,实际上就是监听Web应用的生命周期。 当Servlet容器启动或终止Web应用时,会触发ServletContextEvent事件,该事件由ServletContextListener来处理。 具体步骤如下: 1、新建一个类PropertyListenter实现ServletContextListener接口的contextInitialized方法; 2、读取properties配置文件,转存到Map当中; 3、使用ServletContext对象将Map存储到application作用域中; 4、在web.xml中配置上面的的监听器PropertyListenter: 配置好后,运行Web应用,就能在所有的jsp页面中用EL表达式获取到properties中的属性值了。 以上这篇将properties文件的配置设置为整个Web应用的全局变量实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。 声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
/**
*设值全局变量
*@authormeikai
*@version2017年10月23日下午2:15:19
*/
publicclassPropertyListenterimplementsServletContextListener{
/*(non-Javadoc)
*@seejavax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
*/
@Override
publicvoidcontextDestroyed(ServletContextEventarg0){
//TODOAuto-generatedmethodstub
}
/*(non-Javadoc)
*@seejavax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
@Override
publicvoidcontextInitialized(ServletContextEventsce){
/**
*读取properties文件
*
*/
finalLoggerlogger=(Logger)LoggerFactory.getLogger(PropertyListenter.class);
Propertiesproperties=newProperties();
InputStreamin=null;
try{
//通过类加载器进行获取properties文件流
in=PropertiesUtil.class.getClassLoader().getResourceAsStream("kenhome-common.properties");
properties.load(in);
}catch(FileNotFoundExceptione){
logger.error("未找到properties文件");
}catch(IOExceptione){
logger.error("发生IOException异常");
}finally{
try{
if(null!=in){
in.close();
}
}catch(IOExceptione){
logger.error("properties文件流关闭出现异常");
}
}
/**
*将properties文件转存到map
*/
Map