目的:

我们知道在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或以后版本。