web.xml 配置定时器 详解

1.首先在web.xml中配置,监听器

<!-- 定时器监听 -->
	<listener>
		<listener-class>com.checkoo.ok.excl.TaskManager</listener-class>
	</listener>

2.监听器类

import java.util.Calendar;
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.commons.lang.time.DateUtils;

public class TaskManager implements ServletContextListener {

	//每天的毫秒数
	public static final long DAY = 86400000;
	//定时器
	private Timer timer;
	
	/**
	 * 在Web应用结束时停止任务
	 */
	public void contextDestroyed(ServletContextEvent sce) {
		timer.cancel();//定时器销毁

	}

	/**
	 * 在Web应用启动时初始化任务
	 */
	public void contextInitialized(ServletContextEvent sce) {
		//定义定时器
		Calendar c = Calendar.getInstance();
		c.add(Calendar.DATE, 1);
		c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
		timer = new Timer(true);
		LocationTask locationTask = new LocationTask();//定时执行的内容
		locationTask.setWt(sce.getServletContext().getRealPath(""));
		//timer.schedule(locationTask, c.getTime(), DAY); //定时器在每日凌晨0点执行
		timer.schedule(locationTask, 5000, 3600000); // 启动后5秒执行,后每隔1小时在执行
	}
}

3.内容类(我这里就以导出excl文件为例)

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimerTask;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class LocationTask extends TimerTask {
	private String wt;
	private static boolean isRunning = false;

	@Override
	public void run() {
		if (!isRunning) {
			isRunning = true;
			System.out.println("执行excle导出");
			excelPage();
			isRunning = false;
		} else {
			System.out.println("执行错误");
		}

	}

	@SuppressWarnings({ "deprecation" })
	public void excelPage() {
		List datas = DB查询;
		try {
			//第一步,创建一个webbook,对应一个Excel文件
	        HSSFWorkbook wb = new HSSFWorkbook();
	        //第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
	        HSSFSheet sheet = wb.createSheet("sheet名字");
	        //第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
	        HSSFRow row = sheet.createRow((int)0);
	        //第四步,创建单元格,并设置值表头  设置表头居中
	        HSSFCellStyle style = wb.createCellStyle();
	        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //创建一个居中格式
	        
	        HSSFCell cell = row.createCell((short)0);
	        cell.setCellValue("用户名"); cell.setCellStyle(style);
	        cell = row.createCell((short)1);
	        cell.setCellValue("密码"); cell.setCellStyle(style);
	        cell = row.createCell((short)2);
	        
	        

	        for(int i=0;i<datas.size();i++){
	            row = sheet.createRow((int)i+1);
	            Data data = datas.get(i);
	            //第四步,创建单元格,并设置值
	            row.createCell((short)0).setCellValue(data.get用户名);
	            row.createCell((short)1).setCellValue(data.get密码);
	        }

	File file = new File(wt + "/路径");
	if (!file.exists()) {
		file.mkdirs();
	}
	FileOutputStream fout = new FileOutputStream(wt + "/路径/" + "文件名" +".xls");
            wb.write(fout);
            fout.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public String getWt() {  //服务器路径
		return wt;
	}

	public void setWt(String wt) {
		this.wt = wt;
	}

}

ok,写完收工~~~


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值