佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法

將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法

熱門(mén)標(biāo)簽:阿里云 銀行業(yè)務(wù) Mysql連接數(shù)設(shè)置 科大訊飛語(yǔ)音識(shí)別系統(tǒng) Linux服務(wù)器 電子圍欄 服務(wù)器配置 團(tuán)購(gòu)網(wǎng)站

四大作用域:

Web應(yīng)用中的變量存放在不同的jsp對(duì)象中,會(huì)有不一樣的作用域,四種不同的作用域排序是 pageContext request session application;

1、pageContext:頁(yè)面域,僅當(dāng)前頁(yè)面有效,離開(kāi)頁(yè)面后,不論重定向還是轉(zhuǎn)向(即無(wú)論是redirect還是forward),pageContext的屬性值都失效;

2、request:請(qǐng)求域,在一次請(qǐng)求中有效,如果用forward轉(zhuǎn)向,則下一次請(qǐng)求還可以保留上一次request中的屬性值,而redirect重定向跳轉(zhuǎn)到另一個(gè)頁(yè)面則會(huì)使上一次request中的屬性值失效;

3、session:會(huì)話域,在一次會(huì)話過(guò)程中(從瀏覽器打開(kāi)到瀏覽器關(guān)閉這個(gè)過(guò)程),session對(duì)象的屬性值都保持有效,在這次會(huì)話過(guò)程,session中的值可以在任何頁(yè)面獲?。?/p>

4、application:應(yīng)用域,只要應(yīng)用不關(guān)閉,該對(duì)象中的屬性值一直有效,并且為所有會(huì)話所共享。

利用ServletContextListener監(jiān)聽(tīng)器,一旦應(yīng)用加載,就將properties的值存儲(chǔ)到application當(dāng)中

現(xiàn)在需要在所有的jsp中都能通過(guò)EL表達(dá)式讀取到properties中的屬性,并且是針對(duì)所有的會(huì)話,故這里利用application作用域,

那么什么時(shí)候?qū)roperties中的屬性存儲(chǔ)到application呢?因?yàn)槭菍roperties的屬性值作為全局的變量以方便任何一次EL的獲取,所以在web應(yīng)用加載的時(shí)候就將值存儲(chǔ)到application當(dāng)中,

這里就要利用ServletContextListener:

ServletContextListener是Servlet API 中的一個(gè)接口,它能夠監(jiān)聽(tīng) ServletContext 對(duì)象的生命周期,實(shí)際上就是監(jiān)聽(tīng) Web 應(yīng)用的生命周期。

當(dāng)Servlet 容器啟動(dòng)或終止Web 應(yīng)用時(shí),會(huì)觸發(fā)ServletContextEvent 事件,該事件由ServletContextListener 來(lái)處理。

具體步驟如下:

1、新建一個(gè)類PropertyListenter實(shí)現(xiàn) ServletContextListener接口的contextInitialized方法;

2、讀取properties配置文件,轉(zhuǎn)存到Map當(dāng)中;

3、使用ServletContext對(duì)象將Map存儲(chǔ)到application作用域中;

/**
 * 設(shè)值全局變量
 * @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 {
   //通過(guò)類加載器進(jìn)行獲取properties文件流
   in = PropertiesUtil.class.getClassLoader().getResourceAsStream("kenhome-common.properties");   
   properties.load(in);
   
  } catch (FileNotFoundException e) {
   logger.error("未找到properties文件");
  } catch (IOException e) {
   logger.error("發(fā)生IOException異常");
  } finally {
   try {
    if(null != in) {
     in.close();
    }
   } catch (IOException e) {
    logger.error("properties文件流關(guān)閉出現(xiàn)異常");
   }
  }
      
  
  /**
   * 將properties文件轉(zhuǎn)存到map
   */
  MapString, String> pros = new HashMapString,String>((Map)properties);
  
  /**
   * 將Map通過(guò)ServletContext存儲(chǔ)到全局作用域中
   */
  ServletContext sct=sce.getServletContext(); 
  
  sct.setAttribute("pros", pros);

 }
 

}

4、在web.xml中配置上面的的監(jiān)聽(tīng)器PropertyListenter:

!-- 全局變量監(jiān)聽(tīng)器,讀取properties文件,設(shè)值為全局變量 -->
 listener>
  listener-class>com.meikai.listener.PropertyListenter/listener-class>
 /listener> 

配置好后,運(yùn)行Web應(yīng)用,就能在所有的jsp頁(yè)面中用EL表達(dá)式獲取到properties中的屬性值了。

以上這篇將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

標(biāo)簽:蚌埠 棗莊 衡水 大理 萍鄉(xiāng) 江蘇 廣元 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    北川| 囊谦县| 额济纳旗| 揭阳市| 东明县| 晋城| 筠连县| 呼和浩特市| 卓资县| 沾化县| 白朗县| 泰来县| 湘潭市| 五峰| 交口县| 蚌埠市| 闽清县| 三门峡市| 桐乡市| 铁岭市| 磐安县| 胶州市| 瑞金市| 五台县| 清原| 张家界市| 仙桃市| 七台河市| 永春县| 河间市| 建始县| 大名县| 忻城县| 宝坻区| 广饶县| 达日县| 余干县| 秦安县| 亚东县| 新闻| 神木县|