Tomcat web应用启动时执行代码


有时想在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>


你可能感兴趣的:(Tomcat web应用启动时执行代码)