欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入
实现思想:
1、配置一个ServletContextListener监听器
2、在监听器上配置一个定时器,用来执行定时任务
3、在任务管理器配置任务
实现代码:
Listener监听器类:
package com.chinacreator.report.listener;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.chinacreator.report.thread.ExcelTempFileManager;
/**
* 时间监听器
*
* @author xiaoqun.yi
*/
public class ExcelTempFileListener implements ServletContextListener {
private Timer timer = new Timer();
public static ServletContext servletContext;
public void contextInitialized(ServletContextEvent sce) {
this.servletContext = sce.getServletContext();
try {
// 第一个参数是要运行的代码,第二个参数是从什么时候开始运行,第三个参数是每隔多久在运行一次。
// timer.schedule(new SystemTaskTest(),0,(5*1000));
sce.getServletContext().log(“定时器已启动”);
// 设置在每晚24:0分执行任务
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 24); // 24 ,可以更改时间
calendar.set(Calendar.MINUTE, 0); // 0可以更改分数
calendar.set(Calendar.SECOND, 0);// 0 //默认为0,不以秒计
Date date = calendar.getTime();
// 监听器获取网站的根目录
String path = sce.getServletContext().getRealPath(“/”);
// 第一个参数 是要运行的代码,第二个参数是指定的时间
timer.schedule(new SystemTaskTest(path), date);
sce.getServletContext().log(“已经添加任务调度表”);
} catch (Exception e) {
}
}
public void contextDestroyed(ServletContextEvent sce) {
try {
timer.cancel();
} catch (Exception e) {
}
}
}
/**
* 时间任务器
*
* @author xiaoqun.yi
*/
class SystemTaskTest extends TimerTask {
private String path;
public SystemTaskTest(String path) {
this.path = path;
}
/**
[1][2]
文画音,看似耳目所为,其实是内心世界的感受。