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不懂也希望我将操作的过程记录下来,也就是越详细越好.所以写得比较$%^& ...
随机推荐
- 深刻理解Nginx之基本配置和升级(2)
3 Nginx基本配置 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam9obl9mX2xhdQ==/font/5a6L5L2T/fontsize/400 ...
- spring batch(一):基础部分
spring batch(一):基础部分 博客分类: Spring java spring batch 官网: http://www.springsource.org/spring-batch 下 ...
- elasticsearch源码分析之search模块(server端)
elasticsearch源码分析之search模块(server端) 继续接着上一篇的来说啊,当client端将search的请求发送到某一个node之后,剩下的事情就是server端来处理了,具体 ...
- ChildViewController
View Controller中可以添加多个sub view,在需要的时候显示出来: 可以通过viewController(parent)中可以添加多个child viewController;来控制 ...
- Redis学习笔记(一) 初识 Redis
简介 我所在的公司是一个以线下业务为主的公司,软件这一块的东西可以说是手工作坊,技术上的东西全靠大家自己折腾.最近也是觉得自己在社会主义的怀抱里安逸了太久,要提高思想政治觉悟,不能忘了资本主义的黑暗, ...
- BZOJ 3674/BZOJ 3673 主席树
思路: 主席树维护可持久化数组 剩下的就是普通的并查集了- //By SiriusRen #include <cstdio> #include <cstring> #inclu ...
- JQuery学习系列篇(二)
1.事件切换函数 hover([over],out); over鼠标移动到元素上要触发的函数,out鼠标移出元素要触发的函数. 2.togger 如果元素是可见的,切换为隐藏的:如果元素是隐藏的,切换 ...
- PHP中的类函数和类对象
1.class_exists()函数接受表示类的字符串,检查并返回布尔值.如果类存在,返回true,否则返回false: echo class_exists('Computer'); 2.get_cl ...
- JS面向对像编程四—— prototype 对象
http://blog.csdn.net/fanwenjieok/article/details/54575560 大部分面向对象的编程语言,都是以“类”(class)作为对象体系的语法基础.Java ...
- javaScript注释 to 颜文字
将javascript 注释(alert.console)转化为 颜文字语言. http://utf-8.jp/public/aaencode.html