四种作用域:

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 pros = new HashMap((Map)properties);

/**

* 将Map通过ServletContext存储到全局作用域中

*/

ServletContext sct=sce.getServletContext();

sct.setAttribute("pros", pros);

}

}

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

com.meikai.listener.PropertyListenter

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

Java web 应用全局变量_将properties文件的配置设置为整个Web应用的全局变量。相关推荐

  1. druid.properties文件的配置

    # druid.properties文件的配置 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/plan u ...

  2. Java Web的Maven项目中Properties文件的使用(2)

    为什么80%的码农都做不了架构师?>>>    背景 Java Web中常用一些Properties文件进行部署配置,其中如果在里面配置OS的路径,需要跨平台,主要就是考虑win系统 ...

  3. java通过spring获取配置文件_springboot获取properties文件的配置内容(转载)

    1.使用@Value注解读取 读取properties配置文件时,默认读取的是application.properties. application.properties: demo.name=Nam ...

  4. 第二章、application.properties文件的配置

    前面讲到了如何搭建一个简单的springboot应用,是不是特别简单.springboot内置了tomcat,这就大大减少了我们自己配置tomcat所产生的各种各样的配置手续包括所出现的问题.通过ma ...

  5. 关于web项目log日志指定输出文件位置配置

    首先我们定义一个可以在运行时动态的找出项目的路径WebAppRootKey,这么做的原因是为了在后面配置log4j输出文件路径的时候能随心配置. <context-param><pa ...

  6. 读取*.properties文件的配置信息

    FileName:配置文件的文件名(带后缀) key:想要读取配置文件中的关键字key(如下图红框中的key) public static String GetValues(String FileNa ...

  7. 前端上传图片回显并用base64编码,后端做解码储存,存储图片路径在.properties文件中配置(以上传身份证照片为例)

    前端页面: <form id="kycForm" enctype="multipart/form-data"> <input type=&qu ...

  8. Java Web的Maven项目中Properties文件的使用

    为什么80%的码农都做不了架构师?>>>    背景 我需要在配置文件中设置一些参数,然后在代码中获取数据使用.我的配置文件放在了src/main/resources文件夹下面了. ...

  9. java删除本地文件_读取Properties文件六种方法

    使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream(n ...

最新文章

  1. CCNA战报每日更新
  2. linux sudo漏洞 可导致用户以 root 权限运行命令
  3. 中班音乐 机器人教案_幼儿园中班音乐活动教案《机器人》
  4. 暗备用的运行状态_备用发电机管理制度
  5. rust(56)-mp3(1)
  6. 2019 VOD编码工具指南
  7. LeetCode 112路径总和-简单
  8. 利用MFC按钮使能(或禁用)属性使按钮变正常色(或灰色)
  9. 决策树对鸢尾花数据两特征组合分类python代码的结果_机器学习笔记-决策树
  10. HTML2em一定是32px,px,em,rem的区别
  11. 修复android下webView控件的总结
  12. [ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口
  13. Win8 下配置Java开发环境
  14. android 音频设备类型,实现车载音频 HAL  |  Android 开源项目  |  Android Open Source Project...
  15. JS连接数据库(需配置odbc)
  16. java rome,ROME - RSS聚合类库 - 组件类库 - JAVA开源项目 - 开源吧
  17. 1104报表背景知识
  18. 傅里叶变换、拉普拉斯变换、Z 变换的联系是什么?为什么要进行这些变换?
  19. php李炎恢第二季视频_李炎恢PHP视频教程第二季资源推荐
  20. 阿里云大数据ACA总结

热门文章

  1. LLVM每日谈 | 知乎
  2. The Real Time Linux and RT Applications | PREEMPT_RT
  3. 进程、地址空间、文件、I/O、保护、虚拟内存
  4. C语言libcurl:提供特定主机和端口对的自定义地址--resolve
  5. C语言求一个数的平方根倒数的近似值-一战封神的代码
  6. Helpful C Tools:source、executables、debugging and performance tuning
  7. CUDA:一维、二维的grid、block的核函数线程分配
  8. python真是最烂的语言_在大型项目上,Python 是个烂语言吗?
  9. activity绑定service
  10. Linux ssh shell 自动登录,shell脚本实现ssh自动登录功能分享