加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

Web应用的变量方法的 properties文件的配置设置

发布时间:2023-06-21 13:41:31 所属栏目:教程 来源:
导读:在实际开发中,我们经常需要保存一些全局配置,并随时提供给整个程序抽取,判断当前环境的某些情况,下文就是错新技术频道小编给大家介绍的properties文件的配置设置Web应用的变量方法。

四大作用域:

Web应
在实际开发中,我们经常需要保存一些全局配置,并随时提供给整个程序抽取,判断当前环境的某些情况,下文就是错新技术频道小编给大家介绍的properties文件的配置设置Web应用的变量方法。
 
四大作用域:
 
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); } }
 
4、在web.xml中配置上面的的监听器PropertyListenter:
 
<!-- 全局变量监听器,读取properties文件,设值为全局变量 --> <listener>  <listener-class>com.meikai.listener.PropertyListenter</listener-class> </listener>
 
配置好后,运行Web应用,就能在所有的jsp页面中用EL表达式获取到properties中的属性值了。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!