將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è)面有效,離開(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è)面獲取;
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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法
下面小編就為大家分享一篇在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
JSP實(shí)現(xiàn)登錄功能之添加驗(yàn)證碼
jsp登陸驗(yàn)證,網(wǎng)頁(yè)登陸驗(yàn)證帶驗(yàn)證碼校驗(yàn),登錄功能之添加驗(yàn)證碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2016-12-12
jsp實(shí)現(xiàn)針對(duì)excel及word文檔的打印方法
這篇文章主要介紹了jsp實(shí)現(xiàn)針對(duì)excel及word文檔的打印方法,涉及JSP操作excel及word的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
ssi框架學(xué)習(xí)總結(jié)(mvc三層架構(gòu))
相信大家對(duì)于mvc的三層架構(gòu)已經(jīng)灰常熟悉了,在這就不細(xì)講了,個(gè)人感覺(jué)ssi的框架結(jié)構(gòu)還是比較典型的mvc三層架構(gòu),還是比較容易上手的2014-09-09
淺談JSP serverlet的區(qū)別與聯(lián)系
下面小編就為大家?guī)?lái)一篇淺談JSP serverlet的區(qū)別與聯(lián)系。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
jsp實(shí)現(xiàn)用戶自動(dòng)登錄功能
這篇文章主要為大家詳細(xì)介紹了jsp實(shí)現(xiàn)用戶自動(dòng)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
JSP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)顯示效果代碼
這篇文章主要介紹了JSP實(shí)現(xiàn)的簡(jiǎn)單分頁(yè)顯示效果代碼,以一個(gè)完整實(shí)例形式分析了JSP針對(duì)數(shù)據(jù)庫(kù)的連接、查詢及分頁(yè)顯示實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
jsp SmartUpload 實(shí)現(xiàn)上傳功能代碼
jsp SmartUpload 實(shí)現(xiàn)上傳的代碼,需要的朋友可以參考下。2009-06-06

