用部署文件来存储配置参数在Java中是一种很流行的做法。
配置参数一般存放在context-param元素中,每一个context-param元素代表了一个键值对。
我们可以通过实现ServletContextListener接口读取该键值对中的值,在web应用程序初始化的时候,调用ServletContextListener的contextInitialized()方法,所以我们我们可以重写该方法,实现读取操作。可以这样实现:
public class AppListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
try {
Config config = Config.getConfig(); //存放配置信息,用Map实现
ServletContext sc = sce.getServletContext();
Enumeration parameters = sc.getInitParameterNames();
while(parameters.hasMoreElements()) {
String parameter = (String)parameters.nextElement();
//相应的键值对存到map中
config.addKeyValue(parameter, sc.getInitParameter(parameter));
}
} catch(Exception e) {
System.out.println("com.shou error:" + e.getMessage());
}
}
public void contextDestroyed(ServletContextEvent arg0) {
}
}
接着,必须在web.xml中配置相应的监听类,才能在初始化的时候,自动调用该方法。如:
<listener>
<listener-class>com.shou.util.AppListener</listener-class>
</listener>
这样就可以在任何一个JSP页面,通过EL表达式或JSTL读到context-param中的内容。