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程序定时器的更多相关文章

  1. web程序的路径笔记

    "/"与”\“区别:”/“是unix系统区分文件层级的标志,因为当前web应用程序在服务器端大都使用基于unix系统开发的操作系统,所以web程序包括浏览器里url都遵以”/“来区 ...

  2. .NET WEB程序员需要掌握的技能

    本来这个是我给我们公司入职的新人做一个参考,由于 @张善友 老师在他的微信号转了我的这篇文章<<.Net WEB 程序员需要掌握的技能>>,很多人觉得比较有用,说是看了后知道一 ...

  3. 让你的web程序“动”起来。

    看到这里你可能会问,asp.net程序本身就是动态网站,还要如何动? 我这里所谓的动起来,是指动态加载,动态更新.好吧可能你又要问了动态网站本来就是动态加载,动态更新的.asp.net的程序依附于II ...

  4. (转)对《30个提高Web程序执行效率的好经验》的理解

    阅读了博客园发布的IT文章<30个提高Web程序执行效率的好经验>,这30条准则对我们web开发是非常有用的,不过大家可能对其中的一些准则是知其然而不知其所以然. 下面是我对这些准则的理解 ...

  5. Web程序的运行原理及流程(二)

    其实WEB服务器和WEB应用服务器这两个概念特别容易混淆  可以理解为装了不同软件(服务)的两台计算机(服务器)吧 先对两个概念做一个简单介绍 了解了基本的概念 我们再用两个典型的例子做一下比较(建立 ...

  6. Web程序的运行原理及流程(一)

    自己做Web程序的开发也有两年多了 从最开始跟风学框架  到第一用上框架的欣喜若狂 我相信每个程序员都是这样过来的 在大学学习一门语言 学会后往往很想做一个实际的项目出来  我当时第一次做WEB项目看 ...

  7. ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序

    基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...

  8. 全面解读python web 程序的9种部署方式

    转载自鲁塔弗的博客,本文地址http://lutaf.com/141.htm  python有很多web 开发框架,代码写完了,部署上线是个大事,通常来说,web应用一般是三层结构 web serve ...

  9. linux自动定时备份web程序和mysql数据库

    前些天受朋友说linux定时备份不知道怎么搞,叫帮忙处理一下.由于这段时间正闲着,所以也就欣然答应.由于朋友对linux不懂也希望我将操作的过程记录下来,也就是越详细越好.所以写得比较$%^& ...

随机推荐

  1. android布局中显示隐藏动画

    android 在布局中提供属性,能简单的加入动画效果,例如以下: <LinearLayout ... animateLayoutChanges="true" ... /&g ...

  2. Hive权限之改进

    不足 即使开启hive权限认证的情况下,不论什么用户仍然是超级用户.能够通过grant给不论什么人赋予不论什么权限,这样权限认证基本没有意义.因此必须在开启权限认证的同一时候.对运行grant/rev ...

  3. 简单的Queue

    不考虑好多东西,算法考试中用得到的Queue #include<iostream> using namespace std; const int MAX = 100; struct MyQ ...

  4. java 线程 生产者-消费者与队列,任务间使用管道进行输入、输出 解说演示样例 --thinking java4

    package org.rui.thread.block2; import java.io.BufferedReader; import java.io.IOException; import jav ...

  5. maven的pom.xml配置标签

    转自:https://blog.csdn.net/wf787283810/article/details/76188595 <project xmlns="http://maven.a ...

  6. ROS-URDF文件标签解读

    前言:URDF文件标签解读.margin: auto; width: 700px; height: 100px; ; width: 700px; text-align: center; 一.连杆(li ...

  7. Exception异常常见属性

    废话少说,直接上代码: try { int n = Convert.ToInt32("@"); } catch(Exception ex) { Console.WriteLine( ...

  8. 在64位linux上编译32位程序 for i386 intel

    编辑中 # ld -V GNU ld version 2.15.92.0.2 20040927 Supported emulations: elf_x86_64 elf_i386 i386linux ...

  9. CSS鼠标悬停图片加边框效果,页面布局发生错位的解决办法

    CSS鼠标悬停图片加边框效果,页面布局发生错位的解决办法 .recomend-list{ width:1200px; a{ @extend %fl; margin-right: 30px; width ...

  10. BZOJ 2141 排队 (三维偏序CDQ+树状数组)

    题目大意:略 洛谷传送门 和 [CQOI2015]动态逆序对 这道题一样的思路 一开始的序列视为$n$次插入操作 把每次交换操作看成四次操作,删除$x$,删除$y$,加入$x$,加入$y$ 把每次操作 ...