在web.xml中定義了context-param,一般不會隨意改動,所以在監聽器中做一次處理,容器啟動時讀取並存儲在Properties中,方便以后取值。
SysProperties 類用於存儲 context 鍵值;
SystemListener 監聽器類,處理 context-param 參數。
/**
* 用於存儲參數鍵值
*/
public final class SysProperties {
private static SysProperties instance;
private Properties initProperties = new Properties();
private SysProperties() { }
public static SysProperties getInstance() {
if (instance == null) {
instance = new SysProperties();
}
return instance;
}
/**
* 獲取對應的值
* @param key String 提供的鍵(param-name)
* @return String 鍵對應的值(param-value)
*/
public String getProperty(String key)
{
return this.initProperties.getProperty(key);
}
/**
* 檢測是否包含該鍵
* @param key String 鍵
* @return boolean 該鍵存在返回 true,否則返回 false
*/
public boolean containsKey(String key) {
return this.initProperties.containsKey(key);
}
/**
* 存儲參數
* @param key String param-name
* @param object String param-value
*/
public void put(String key, String object) {
this.initProperties.put(key, object);
}
}
/**
* 系統監聽,程序啟動時初始化並存儲相關參數
*/
public class SystemListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
initContextParam(servletContextEvent);
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) { }
private void initContextParam(ServletContextEvent event) {
Enumeration<String> names = event.getServletContext().getInitParameterNames();
while (names.hasMoreElements())
{
String name = names.nextElement();
String value = event.getServletContext().getInitParameter(name);
SysProperties.getInstance().put(name, value);
}
}
}
