Listener监听器使用小案例
这里介绍的就是一个客户流失监听器案例
新建一个监听器实现ServletContextListener接口 覆写contextDestroyed和contextInitialized 方法
package listener;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class LostListener implements ServletContextListener {
private Timer timer; //定时器
//服务器关闭的时候会自动调用
public void contextDestroyed(ServletContextEvent arg0) {
timer.cancel();
System.out.println("客户监听任务已关闭");
}
//服务器启动的时候会自动调用
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("客户监听任务已启动");
timer = new Timer();
LostTask lostTask=new LostTask();
//开启服务器后多少毫秒去执行一次lostTask类中的run方法 过多少毫秒之后再去执行一边这个类中的方法
timer.scheduleAtFixedRate(lostTask, 0, 60*60*1000);//每过一个小时去执行一次
}
}
新建一个定时器 集成TimerTask类重写run方法
package listener;
import java.sql.Date;
import java.util.Calendar;
import java.util.List;
import java.util.TimerTask;
public class LostTask extends TimerTask {
@Override
public void run() {
System.out.println("进入执行任务类 run..........");
Calendar c=Calendar.getInstance();
int week=c.get(c.DAY_OF_WEEK);//星期几
int hour=c.get(c.HOUR_OF_DAY);//第几个小时
if(week==7&&hour==24){指定每个星期的几点钟开始执行
System.out.println("客户流失情况扫描开始了。。。。。。。。");
List<CstCustomer> list=CustMethod.getCustomers();
//根据扫描的情况去以短信或邮件的形式提示流失的客户信息代码处理
System.out.println("扫描完成。。。。。。。。");
}
}
web.xml配置
<listener>
<listener-class>listener.LostListener</listener-class>
</listener>