- 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>