在 Servlet API 中有一个 ServletContextListener 接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。
当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。在 ServletContextListener 接口中定义了处理ServletContextEvent 事件的两个方法。
原理:定义一个监听器,需要实现ServletContextListener接口。
当容器启动或销毁,执行对应的方法,
new一个定时器,调用schedule()方法,即可运行计划。
任务类继承TimerTask类,被schedule()方法执行。
public class MyListenser implements ServletContextListener{
private Timer timer = null;
public void contextDestroyed(ServletContextEvent arg0) {
timer.cancel();
}
public void contextInitialized(ServletContextEvent arg0) {//容器启动时执行
timer = new Timer(); //获得定时器
timer.schedule(new MyTask(), 5000,3000); //定时计划,第一个参数为实现了TimerTask的一个java类,第二个为容器启动后几秒开始执行,第三个参数是间隔几秒执行
//timer.schedule(new MyTask()); 表示容器启动5秒后,只执行一次
}
}
public class MyTask extends TimerTask{
@Override
public void run() {
System.out.println("运行了每隔2秒"+new Date());
}
}
在线人数:session建立,计时器+1,session销毁,计时器减1
服务器被访问次数:是总次数,当服务器维护,下次运行,次数累加,这里就需要在启动时,去文件文件中读取counter,销毁时,保存counter到文件中,应该需要设置成定时添加,比如突然停电。