四种作用域:

Web应用中的变量存放在不同的jsp对象中,会有不一样的作用域,四种不同的作用域排序是 pageContext < request < session < application;

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是Servlet API 中的一个接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。

当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。

具体步骤如下:

  1、新建一个类PropertyListenter实现 ServletContextListener接口的contextInitialized方法

  2、读取properties配置文件转存到Map当中

  3、使用ServletContext对象将Map存储到application作用域中

/**
* 设值全局变量
* @author meikai
* @version 2017年10月23日 下午2:15:19
*/
public class PropertyListenter implements ServletContextListener { /* (non-Javadoc)
* @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
*/
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub } /* (non-Javadoc)
* @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
@Override
public void contextInitialized(ServletContextEvent sce) { /**
* 读取properties文件
*
*/
final Logger logger = (Logger) LoggerFactory.getLogger(PropertyListenter.class); Properties properties = new Properties(); InputStream in = null;
try {
//通过类加载器进行获取properties文件流
in = PropertiesUtil.class.getClassLoader().getResourceAsStream("kenhome-common.properties");
properties.load(in); } catch (FileNotFoundException e) {
logger.error("未找到properties文件");
} catch (IOException e) {
logger.error("发生IOException异常");
} finally {
try {
if(null != in) {
in.close();
}
} catch (IOException e) {
logger.error("properties文件流关闭出现异常");
}
} /**
* 将properties文件转存到map
*/
Map<String, String> pros = new HashMap<String,String>((Map)properties); /**
* 将Map通过ServletContext存储到全局作用域中
*/
ServletContext sct=sce.getServletContext(); sct.setAttribute("pros", pros); } }

、在web.xml中配置上面的的监听器PropertyListenter:

<!-- 全局变量监听器,读取properties文件,设值为全局变量 -->
<listener>
<listener-class>com.meikai.listener.PropertyListenter</listener-class>
</listener>

配置好后,运行Web应用,就能在所有的jsp页面中用EL表达式获取到properties中的属性值了。

将properties文件的配置设置为整个Web应用的全局变量。的更多相关文章

  1. jdbc.properties 文件的配置

    jdbc.properties文件的配置   使用配置文件访问数据库的优点是: 一次编写随时调用,数据库类型发生变化只需要修改配置文件. 配置文件的设置: 在配置文件中,key-value对应的方式编 ...

  2. application.properties文件常用配置

    项目一直在用properties文件写配置,因为配置不是自己来写所以也从来没有研究过各个配置的含义,所以对很多配置也是一知半解,只是知道可以这样用,但是不知道为什么能这样用.自己抽空找了一下资料做个记 ...

  3. java读取properties文件的配置信息

    项目开发中,我们一般来向 application.properties 文件中放一些全局配置变量,以便程序中读取使用,本篇内容来演示从properties配置文件中读取键值. 当然,我们不一定写入 a ...

  4. 每日一蠢 .kettle 下的kettle.properties文件内配置的内容不能被识别

    昨天装封装好的ETL 工具  窝将环境变量中的KETTLE_HOME删除了, 结果 .kettle 下的kettle.properties文件内配置的内容不能被识别 can't parse argum ...

  5. log4j.properties文件的配置

    Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松 ...

  6. 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置

    目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...

  7. Android下使用Properties文件保存程序设置

    原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码.    读取.properties文件中的配置: String strValue ...

  8. Liferay SDK 6.2与7.0中build.[$username].properties 文件的配置

    这篇文章是针对刚开始开发Liferay的新手写的,希望能够帮到刚入门的开发者减少一些配置上的麻烦. 前提: 1. 下载了Liferay IDE(Liferay的官方开发工具) 2.下载了Liferay ...

  9. 【转】Android下使用Properties文件保存程序设置

    原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码.    读取.properties文件中的配置:  String strValue ...

随机推荐

  1. 汽车学习---汽车知识大全【all】

    汽车驱动/发动机/大灯 侧方位停车和倒车入库技巧 手动挡车型 换档8大技巧 常见的掉头情况注意事项 最全的左转,右转,待转,掉头方法 开车技巧大汇总,尤其适合新手司机 汽车常识扫盲,不做“汽车小白”! ...

  2. phpcas 整合 ecms的问题

    如果有ecms整合phpCAS经验的小伙伴可以给我留言,有偿付费 需求是:ecms登录自动跳转到CAS认证(已完成),认证后直接跳转到帝国cms系统中,并保持帝国cms系统权限等都和以前一样 正常使用 ...

  3. symfony学习笔记2—纯的PHP代码和symfony的区别

    Symfony vs 纯PHP为啥symfony比普通的php文件访问要好?这一章我们写一个简单的php文件项目,然后组织它,你会发现为什么web应用会发展到现在这个样子.最后我们将学习symfony ...

  4. Java问题汇总(一) ----------2019/2/22

    第一次写,就弄弄简单样式

  5. JQuery $.axaj的基本格式

    总是忘了,保存以备后用. $.ajax({ url: '', //请求的url地址 dataType: "json", //返回的格式为json async: true, //请求 ...

  6. Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务

    Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...

  7. bzoj1808 [Ioi2007]training 训练路径

    Description 马克(Mirko)和斯拉夫克(Slavko)正在为克罗地亚举办的每年一次的双人骑车马拉松赛而紧张训练.他们需要选择一条训练路径. 他们国家有N个城市和M条道路.每条道路连接两个 ...

  8. 虚机的SQL Server空间占满之后进行释放的一些操作

    用了好几年的一个虚机,数据库是SQL Server 2008,配额500M. 今天忽然发现无法录入数据,登录后台一看,原来是数据库容量满了. 很久没用SQL Server了,找到一段之前用过的收缩数据 ...

  9. Spring Boot中使用Redis小结

    Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, 等. Redis简单介绍 Redi ...

  10. Python学习之路 (三)爬虫(二)

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联 ...