直接上代碼:java
在src下新建一個StartListener 實現接口ServletContextListener,:web
/** * @Title:StartListener.java * @Package:com.sgl.listener * @Description: TODO * @author Administrator * @date 2015年9月14日 上午8:44:04 * @version */ package com.sgl.listener; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** * @author Administrator * */ public class StartListener implements ServletContextListener { //須要的靜態資源 private static Map<String, Object> valmap; /* * (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 arg0) { // TODO Auto-generated method stub //在web服務器初始化的時候講資源文件進行初始換操做 if (valmap == null) { valmap = new HashMap<String, Object>(); } valmap.put("key1", "val1"); valmap.put("key2", "val2"); valmap.put("key3", "val3"); System.out.println("監聽器啓動完成。。。。"); } public static Map<String, Object> getMap() { return valmap; } }
contextDestroyed:web服務器關閉時進行的操做,通常用於釋放系統資源。數據庫
contextInitialized:web服務器啓動時進行的操做,通常用於加載系統的參數,包括一些配置的xml文件,日誌文件,系統資源等。服務器
上面的例子中完成了對資源文件valmap的初始化工做,接下來咱們經過訪問jsp頁面直接獲取valmap中的值,下面是在index.jsp中的java代碼:jsp
<body> <% Map<String, Object> map = StartListener.getMap(); Set<String> keys = map.keySet(); for (String key : keys) { %> key:<%=key%>---------<%=map.get(key)%> <% } %> </body>
在地址欄中輸入你的項目地址:例如:com.sgl.myweb/myweb/index.jspide
結果:key:key3---------val3 key:key2---------val2 key:key1---------val1性能
總結:咱們在進行web系統開發時每每須要加載一些系統的習慣資源文件,以便於咱們在後期的coding中訪問使用。在啓動web項目是咱們經過監聽器的初始換方法將咱們須要的一些資源文件或者是數據直接加載到內存,這樣能夠很好的避免重複操做數據庫而帶來的性能問題。spa