在web项目启动的时候可以进行必要数据的初始化,如log4j,config.properties等相关信息的初始化,通常在灵活读取配置文件的时候比较管用
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;
public class InitServlet extends HttpServlet {
/**
* define a field serialVersionUID which type is long
*/
private static final long serialVersionUID = -7718302829857998640L;
public static final String FILE_SEPARATOR = System.getProperties().getProperty("file.separator");
private static String contextPath;
private static String hibernatePath;
private static String serverConfig;
private static String classPath;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
String prefix = config.getServletContext().getRealPath("/");
InitServlet.contextPath = prefix;
if(FILE_SEPARATOR.equals("\\")) {
// 获取内容服务器配置文件的路径
serverConfig = prefix + "\\WEB-INF\\config.properties";
} else if(FILE_SEPARATOR.equals("/")) {
serverConfig = prefix + "/WEB-INF/config.properties";
}
// Log4J
String log4jFile = config.getInitParameter("log4j");
String log4jConfigPath = prefix + log4jFile;
PropertyConfigurator.configure(log4jConfigPath);
// Hibernate Path
hibernatePath = prefix + config.getInitParameter("hibernate");
classPath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
}
@Override
public void destroy() {
}
public static final String getContextPath() {
return InitServlet.contextPath;
}
public static final String getHibernatePath() {
return InitServlet.hibernatePath;
}
public static final String getServerConfig() {
return serverConfig;
}
public static final String getClassPath() {
return classPath;
}
}
在web.xml中需要加入下面的信息,否则web项目无法识别初始化信息
initServlet
com.xxx.xxx.init.InitServlet
log4j
WEB-INF/log4j.properties
hibernate
WEB-INF/hibernate.cfg.xml
1