web程序定时器
package com.timer; import java.util.Calendar;
import java.util.Date;
import java.util.Timer; import javax.servlet.ServletContext; /**
* Created on 2013-8-13
* Title: J2EE程序_[定时任务管理器]_[公共类]
* Description: [定时器]
* Copyright: xuqb (c) 2013
* Company: xuqb工作室
*
* @developer xuqb[155282323@qq.com]
* @version 1.0
*/
public class TimerManager {
/**
* Description:[时间间隔,每天执行次数(每五秒执行一次)]
* Value:PERIOD_DAY
*/
private static final long PERIOD_DAY = 5 * 1000; /**
* Description:[构造方法]
* @constructor 方法.
*/
public TimerManager(ServletContext event) {
// --获取配置文件中的时间
String commitCount = "0:0"; String[] objtime = null;
// 拆分从配置文件预设的小时和分钟;若没有,则默认零时零分执行(24小时制)
if (commitCount != null && !"".equals(commitCount)) {
objtime = commitCount.split(":");
} else {
objtime = new String[2];
objtime[0] = "0"; // 零时(24小时制)
objtime[1] = "0"; // 零分(24小时制)
}
int beginHour = Integer.parseInt(objtime[0]); // 开始执行小时(24小时制)
int beginMimu = Integer.parseInt(objtime[1]); // 开始执行分钟(24小时制)
Calendar calendar = Calendar.getInstance();
/*** 定制每日某时:某分执行方法(24小时制) ***/
calendar.set(Calendar.HOUR_OF_DAY, beginHour); // 开始执行小时(24小时制)
calendar.set(Calendar.MINUTE, beginMimu); // 开始执行分钟(24小时制)
calendar.set(Calendar.SECOND, 0); // 开始执行秒(24小时制)
Date date = calendar.getTime(); // 第一次执行定时任务的时间
// 如果第一次执行定时任务的时间 小于 当前的时间
// 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
if (date.before(new Date())) {
date = this.addDay(date, 0); // 0代表增加0天
}
Timer timer = new Timer();
NFDFlightDataTimerTask task = new NFDFlightDataTimerTask(event);
// 安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schedule(task, date, PERIOD_DAY);
} /**
* Created on 2013-8-13
* Description: [增加或减少天数]
*
* @param date
* @param num
* @return
* @developer: xuqb[155282323@qq.com]
* @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
*/
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
}
package com.timer; import java.util.TimerTask; import javax.servlet.ServletContext; /**
* Created on 2013-8-13
* Title: JavaWeb程序_[定时任务管理器]_[引用类]
* Description: [配合定时器引入具体业务实现类]
* Copyright: xuqb (c) 2013
* Company: xuqb工作室
* @developer xuqb[155282323@qq.com]
* @version 1.0
*/
public class NFDFlightDataTimerTask extends TimerTask { private ServletContext context = null; public NFDFlightDataTimerTask(ServletContext context){
this.context = context;
} /**
* Created on 2013-8-13
* Description: [方法功能中文描述]
*
* @developer: xuqb[155282323@qq.com]
* @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
*/
public void run() {
try { int num = (int)(1+Math.random()*(10-1+1));
System.out.println(num);
context.setAttribute("bull", num); System.out.println(context.getAttribute("bull"));
// 在这里写你要执行的内容
System.out.println("这里编辑您的业务方法");
} catch (Exception emz) {
System.out.println("解析信息发生异常");
emz.printStackTrace();
}
}
}
package com.timer; import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; /**
* Created on 2013-8-13
* Title: JavaWeb程序_[模块名称]_[说明]
* Description: [描述该类概要功能介绍]
* Copyright: xuqb (c) 2013
* Company: xuqb工作室
*
* @developer xuqb[155282323@qq.com]
* @version 1.0
*/
public class NFDFlightDataTaskListener implements ServletContextListener { private ServletContext context = null; /**
* Created on 2013-8-13
* Description: [方法功能中文描述]
*
* @developer: xuqb[155282323@qq.com]
* @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
*/
public void contextInitialized(ServletContextEvent event) {
this.context = event.getServletContext();
new TimerManager(context);
} /**
* Created on 2013-8-13
* Description: [方法功能中文描述]
*
* @developer: xuqb[155282323@qq.com]
* @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
*/
public void contextDestroyed(ServletContextEvent event) {
}
}
web.xml 插入如下代码
<!-- begin 定时任务管理器 -->
<listener>
<listener-class>com.timer.NFDFlightDataTaskListener</listener-class>
</listener>
<!-- end 定时任务管理器-->
web程序定时器的更多相关文章
- web程序的路径笔记
"/"与”\“区别:”/“是unix系统区分文件层级的标志,因为当前web应用程序在服务器端大都使用基于unix系统开发的操作系统,所以web程序包括浏览器里url都遵以”/“来区 ...
- .NET WEB程序员需要掌握的技能
本来这个是我给我们公司入职的新人做一个参考,由于 @张善友 老师在他的微信号转了我的这篇文章<<.Net WEB 程序员需要掌握的技能>>,很多人觉得比较有用,说是看了后知道一 ...
- 让你的web程序“动”起来。
看到这里你可能会问,asp.net程序本身就是动态网站,还要如何动? 我这里所谓的动起来,是指动态加载,动态更新.好吧可能你又要问了动态网站本来就是动态加载,动态更新的.asp.net的程序依附于II ...
- (转)对《30个提高Web程序执行效率的好经验》的理解
阅读了博客园发布的IT文章<30个提高Web程序执行效率的好经验>,这30条准则对我们web开发是非常有用的,不过大家可能对其中的一些准则是知其然而不知其所以然. 下面是我对这些准则的理解 ...
- Web程序的运行原理及流程(二)
其实WEB服务器和WEB应用服务器这两个概念特别容易混淆 可以理解为装了不同软件(服务)的两台计算机(服务器)吧 先对两个概念做一个简单介绍 了解了基本的概念 我们再用两个典型的例子做一下比较(建立 ...
- Web程序的运行原理及流程(一)
自己做Web程序的开发也有两年多了 从最开始跟风学框架 到第一用上框架的欣喜若狂 我相信每个程序员都是这样过来的 在大学学习一门语言 学会后往往很想做一个实际的项目出来 我当时第一次做WEB项目看 ...
- ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序
基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...
- 全面解读python web 程序的9种部署方式
转载自鲁塔弗的博客,本文地址http://lutaf.com/141.htm python有很多web 开发框架,代码写完了,部署上线是个大事,通常来说,web应用一般是三层结构 web serve ...
- linux自动定时备份web程序和mysql数据库
前些天受朋友说linux定时备份不知道怎么搞,叫帮忙处理一下.由于这段时间正闲着,所以也就欣然答应.由于朋友对linux不懂也希望我将操作的过程记录下来,也就是越详细越好.所以写得比较$%^& ...
随机推荐
- linux虚拟机网络设置好ping百度没有用
场景:公司内网,本机使用的是本地连接,不是wiff,虚拟机设置了桥接模式 问题:使用桥接模式 启动好网络服务,查看ifconfig也获取到了设置的ip,可是ping了www.baidu.com还是没有 ...
- 2016.03.04,英语,《Vocabulary Builder》Unit 04
vor: 来自拉丁动词vorare,指to eat,-ivorous指吃某种食物的eater.carn肉,肉欲+vore吃→吃肉的:carnival狂欢节,谢肉节voracious a 狼吞虎咽的(v ...
- HDU 5493 Queue 树状数组+二分
Queue Problem Description N people numbered from 1 to N are waiting in a bank for service. They all ...
- BZOJ3170: [Tjoi2013]松鼠聚会
[传送门:BZOJ3170] 简要题意: 给出n个点的坐标,规定两个点的距离=max(|x1-x2|,|y1-y2|) 要求选出一个点,使得这个点到所有点的距离和最小 题解: 切比雪夫转换例题 将一个 ...
- Linux性能优化和监控系列(一)——top工具
解释服务器发生了什么——top工具 在检查服务器的详细工作性能状态前,系统管理员需要对当前服务器状态有总体的了解. top是检查服务器总体状态的强有力工具, 通过top可以获取CPU, Memory, ...
- SPOJ COT2 Count on a tree II (树上莫队)
题目链接:http://www.spoj.com/problems/COT2/ 参考博客:http://www.cnblogs.com/xcw0754/p/4763804.html上面这个人推导部分写 ...
- kafka windows安装 命令行下使用测试
1.zookeeper安装: (https://zookeeper.apache.org/releases.html) ①进入zookeeper的相关设置所在的文件目录,例如本文的:D:\bigd ...
- 在.NetCore2.0中使用Swagger
一.新建.netCore webapi项目 二.安装swagger ,通过 Package Manager 控制台:Install-Package SwashBuckle.AspNetCore -Pr ...
- Linux学习日记——字符处理
(菜鸡学习日记 各种使用命令只列举了常用几种,发现错误望指正) 一.管道 在Linux 中,管道就是一个固定大小的缓冲区,大小为一页4K.它是一种通信的机制,可以使用管道符“ | ” 来连接进程,连接 ...
- Hibernate框架学习(七)——多对多关系
一.关系表达 1.表中的表达 2.实体中的表达 3.orm元数据中的表达 在User.hbm.xml中添加: 在Role.hbm.xml中添加(与上相反): 二.操作关联属性 1.保存员工及角色 pu ...