將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法
四大作用域:
Web應(yīng)用中的變量存放在不同的jsp對(duì)象中,會(huì)有不一樣的作用域,四種不同的作用域排序是 pageContext < request < session < application;
1、pageContext:頁(yè)面域,僅當(dāng)前頁(yè)面有效,離開頁(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ò)程中(從瀏覽器打開到瀏覽器關(guān)閉這個(gè)過(guò)程),session對(duì)象的屬性值都保持有效,在這次會(huì)話過(guò)程,session中的值可以在任何頁(yè)面獲取;
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 */ Map<String, String> pros = new HashMap<String,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è)參考,也希望大家多多支持我們。
欄 目:JSP編程
下一篇:jsp+servlet實(shí)現(xiàn)文件上傳與下載功能
本文標(biāo)題:將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法
本文地址:http://mengdiqiu.com.cn/a1/JSPbiancheng/11440.html
您可能感興趣的文章
- 01-11web下載文件和跳轉(zhuǎn)的方法
- 01-11Properties 持久的屬性集的實(shí)例詳解
- 01-11jsp文件下載功能實(shí)現(xiàn)代碼
- 01-11JSP servlet實(shí)現(xiàn)文件上傳下載和刪除
- 01-11jsp+servlet實(shí)現(xiàn)文件上傳與下載功能
- 01-11Jsp+Servlet實(shí)現(xiàn)文件上傳下載 文件上傳(一)
- 01-11Jsp+Servlet實(shí)現(xiàn)文件上傳下載 文件列表展示(二)
- 01-11Jsp+Servlet實(shí)現(xiàn)文件上傳下載 刪除上傳文件(三)
- 01-11JSP+Servlet實(shí)現(xiàn)文件上傳到服務(wù)器功能


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-11web下載文件和跳轉(zhuǎn)的方法
- 01-11Spring注入Date類型的三種方法總結(jié)
- 01-11在JSP中使用formatNumber控制要顯示的小
- 01-11Properties 持久的屬性集的實(shí)例詳解
- 01-11EJB3.0部署消息驅(qū)動(dòng)Bean拋javax.naming.Na
- 01-11jsp文件下載功能實(shí)現(xiàn)代碼
- 01-11JSP頁(yè)面跳轉(zhuǎn)方法大全
- 01-11詳解Spring的核心機(jī)制依賴注入
- 01-11jsp 使用request為頁(yè)面添加靜態(tài)數(shù)據(jù)的實(shí)
- 01-11Spring獲取ApplicationContext對(duì)象工具類的
隨機(jī)閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)