import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class CustomConfigCache implements ServletContextListener{
public static Map<String, String> configMap = new HashMap<String, String>();
public void contextInitialized(ServletContextEvent sce) {
String webAppRoot = sce.getServletContext().getRealPath("/");
System.setProperty("project.contextPath" , sce.getServletContext().getContextPath());
System.setProperty("project.root" , webAppRoot);
String prosFilePath = this.getClass().getClassLoader().getResource("").getPath()+ "customConfig.properties";
try {
this.getPropertyValuesByFileName(prosFilePath);
} catch (IOException e) {
e.printStackTrace();
}
}
public void getPropertyValuesByFileName(String propertiesFileName) throws IOException {
Properties p = new Properties();// 加載屬性文件讀取類
FileInputStream in = new FileInputStream(propertiesFileName);// 以流的形式讀入屬性文件
p.load(in);// 屬性文件將該流加入的可被讀取的屬性中
in.close();// 讀完了關閉
Iterator itr = p.entrySet().iterator();
while (itr.hasNext()){
Entry e = (Entry)itr.next();
configMap.put((String)e.getKey(), (String)e.getValue());
}
}
public void getValueByPropertyNames(String propertiesFileName,
List<String> list) throws IOException {
Properties p = new Properties();// 加載屬性文件讀取類
FileInputStream in = new FileInputStream(propertiesFileName);// 以流的形式讀入屬性文件
p.load(in);// 屬性文件將該流加入的可被讀取的屬性中
in.close();// 讀完了關閉
for (String key : list) {
configMap.put(key, p.getProperty(key));
}
}
/**
* 在服務器停止運行的時候執行
*/
public void contextDestroyed(ServletContextEvent arg0) {
}
}
path = CustomConfigCache.configMap.get("ImageUrl") ;//調用配置文件中ImageUrl 屬性值