今天在解决Web项目启动时第一个请求会执行两次的问题时,顺便总结了项目中Web项目初始化的问题,内容如下:
为什么需要初始化
我们的Web项目中,main函数是不可见的,如果我们需要在Web项目刚开始运行时就执行某些操作,就需要项目的初始化。
解决方式
使用javaEE中的ServletContextListener,通过继承这个接口的Listener响应Web项目启动与终止时的消息,完成项目的初始化工作,代码如下:
/**
* Created by lihao on 2017/4/1.
*/
public class InitListener implements ServletContextListener {
Logger logger = Logger.getLogger(this.getClass());
public void contextInitialized(ServletContextEvent servletContextEvent) {
logger.info("服务器已初始化");
InitHandler.init();
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
logger.info("服务器已关闭");
}
}
然后需要在web.xml中注册这个Listener:
<!-- Web初始化监听器,在项目初始化时调用初始化类 -->
<listener>
<listener-class>com.server.listener.InitListener</listener-class>
</listener>
完成,看下效果:
服务器开始时
服务器结束时
成功!