直接上代码:
在src下新建一个StartListener 实现接口ServletContextListener,:
/** * @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代码:
<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.jsp
结果:key:key3---------val3 key:key2---------val2 key:key1---------val1
总结:我们在进行web系统开发时往往需要加载一些系统的习惯资源文件,以便于我们在后期的coding中访问使用。在启动web项目是我们通过监听器的初始换方法将我们需要的一些资源文件或者是数据直接加载到内存,这样可以很好的避免重复操作数据库而带来的性能问题。