- import java.io.Serializable;
- import java.util.Timer;
- import java.util.TimerTask;
- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
- import com.cy.business.Task;
- public class TestListener implements ServletContextListener,Serializable{
- private static final long serialVersionUID = 1L;
- private Timer timer ;
- private Task task=new Task();
- public TestListener() {
- // TODO Auto-generated constructor stub
- System.out.println("start");
- }
- public void contextInitialized(ServletContextEvent event) {
- timer = new Timer(true);
- timer.schedule(task, 0, 1000);//milliseconds
- //在ServletContext中设置一系列的属性,可以在jsp的页面中调用
- event.getServletContext().log("定时器已启动"+task.toString());
- event.getServletContext().setAttribute("task", task);
- event.getServletContext().setAttribute("timer", timer);
- event.getServletContext().setAttribute("athread", task.getAthread());
- }
- public void contextDestroyed(ServletContextEvent event) {
- timer.cancel();
- event.getServletContext().log("定时器已取消");
- }
- }
2。web.xml中配置
<listener>
<listener-class> com.listener.TestListener </listener-class>
</listener>
3。test.jsp中使用监听类中设置的属性
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- <%
- //调用监听类中设置的属性
- Task task=(Task)(getServletContext().getAttribute("task"));
- Timer timer=(Timer)(getServletContext().getAttribute("timer"));
- Athread athread=(Athread)(getServletContext().getAttribute("athread"));
- System.out.println("thraed stop id:"+athread.getId());
- athread.stopthread();
- Thread.currentThread().sleep(10*1000);
- task.cancel();
- //timer.schedule(new TestTimer(),0,3*1000);//milliseconds
- %>
- </head>