1。监听类
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>