有时想在tomcat启动时,就做一些操作,譬如缓存一些东西。
我常用的方法有两种:
1 静态块(此方法其实不仅限tomcat启动,只要程序运行都会被执行):
-- 就是在java提供的static块语法中,编写需要执行的方法。
例如:以前做过一个利用webservice方法读取组长管理中所有的数据存放至系统中,这样系统中调用则可以直接读取系统存放的组织结构信息,提高效率。
代码:
static {
// 需要启动时执行的方法
}
2 自定义一个 HttpServlet
1.定义一个HttpServlet,并且重载init方法
2.配置Servlet(web.xml)
-- 配置Servlet启动时执行
-- url-pattern 配置一个不用被监听到的地址
优势:
1.servlet方式的优势在于,如果需要它拥有servlet环境,这样就可以实现初始化 Application 变量这样的事情(如:taglib中的 contextPath)。
代码:
AppStart.java
public class AppStart extends HttpServlet{
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
System.out.println("自动加载启动.");
System.out.println("ip地址."+Config.getIp());
// this.getServletContext().set
this.getServletContext().setAttribute("ip", Config.getIp());
this.getServletContext().setAttribute("systemid", Config.getSystemId());
}
static {
// 需要启动时执行的方法
}
}
web.xml
<servlet>
<servlet-name>AppStart</servlet-name>
<servlet-class>com.megait.dm.util.AppStart</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AppStart</servlet-name>
<url-pattern>/alwaysNoMatch.action</url-pattern>
</servlet-mapping>