web.xml 配置定时器 详解

本文介绍如何在Web应用中实现定时任务,具体以导出Excel文件为例,详细阐述了从配置监听器到执行定时任务的全过程。

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,写完收工~~~


内容概要:本文介绍了一个关于超声谐波成像中幅度调制聚焦超声所引起全场位移和应变的分析模型,并提供了基于Matlab的代码实现。该模型旨在精确模拟和分析在超声谐波成像过程中,由于幅度调制聚焦超声作用于生物组织时产生的力学效应,包括全场的位移与应变分布,从而为医学成像和治疗提供理论支持和技术超声谐波成像中幅度调制聚焦超声引起的全场位移和应变的分析模型(Matlab代码实现)手段。文中详细阐述了模型构建的物理基础、数学推导过程以及Matlab仿真流程,具有较强的理论深度与工程应用价值。; 适合人群:具备一定声学、生物医学工程或力学背景,熟悉Matlab编程,从事医学成像、超声技术或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于超声弹性成像中的力学建模与仿真分析;②支持高强度聚焦超声(HIFU)治疗中的组织响应预测;③作为教学案例帮助理解超声与组织相互作用的物理机制;④为相关科研项目提供可复用的Matlab代码框架。; 阅读建议:建议读者结合超声物理和连续介质力学基础知识进行学习,重点关注模型假设、偏微分方程的数值求解方法及Matlab实现细节,建议动手运行并修改代码以加深理解,同时可拓展应用于其他超声成像或治疗场景的仿真研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值