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