tomcat启动时自动加载一个类 MyServletContextListener

时间:2022-08-21 16:47:28

目的:

我们知道在tomcat启动后,需要页面请求进行驱动来执行操作接而响应。我们希望在tomcat启动的时候能够自动运行一个后台线程,以处理我们需要的一些操作。因此需要tomcat启动时就自动加载一个类,或运行一个类的方法。

可以采用ServletContextListener。

方法:

(1)编写一个监听类,实现javax.servlet.ServletContextListener接口。

 1 import javax.servlet.ServletContextEvent;
 2 import javax.servlet.ServletContextListener;
 3 
 4 import com.SWDiskTest.Control.ManagerThread;
 5 import com.SWDiskTest.model.Chamber;
 6 
 7 public class MyServletContextListener implements ServletContextListener {
 8     static Chamber chamber = new Chamber();
 9     static{
10         System.out.println("static");
11         new Thread(new ManagerThread(chamber)).start();
12     }
13 
14     @Override
15     public void contextDestroyed(ServletContextEvent arg0) {
16         // TODO Auto-generated method stub
17 
18     }
19 
20     @Override
21     public void contextInitialized(ServletContextEvent arg0) {
22         // TODO Auto-generated method stub
23         System.out.println("start");
24 
25     }
26 
27 }

(2)配置web.xml

<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <listener>
      <listener-class>com.SWDiskTest.startup.MyServletContextListener</listener-class>
  </listener>
......
</web-app>

注意:

应用事件监听器程序是建立或修改servlet环境或会话对象时通知的类。它们是servlet规范的版本2.3中的新内容。注册一个监听程序涉及在web.xml的web-app元素内放置一个listener元素。虽然listener元素的结构很简单,但请不要忘记,必须正确地给出web-app元素内的子元素的次序。listener元素位于所有的servlet元素之前以及所有filter-mapping元素之后。此外,因为应用生存期监听程序是serlvet规范的2.3版本中的新内容,所以必须使用web.xmlDTD的2.3或以后版本。