`
反求诸己
  • 浏览: 543337 次
  • 性别: Icon_minigender_1
  • 来自: 湖南娄底
社区版块
存档分类
最新评论

WEB计时器的实现——Timer(转载)

阅读更多

Java定时器(java.util.Timer)有定时触发计划任务的功能,通过配置定时器的间隔时间,在某一间隔时间段之后会自动有规律的调用预先所安排的计划任务(java.util.TimerTask)。另外,由于我们希望当Web工程启动时,定时器能自动开始计时,在整个Web工程的生命期里,定时器能在每晚深夜触发一次报表计算引擎。因此定时器的存放位置也值得考查,不能简单的存在于单个Servlet或JavaBean中,必须能让定时器宿主的存活期为整个Web工程生命期,在工程启动时能自动加载运行。结合这两点,跟Servlet上下文有关的侦听器就最合适不过了,通过在工程的配置文件中加以合理配置,会在工程启动时自动运行,并在整个工程生命期中处于监听状态。

......下面就Servlet侦听器结合 Java定时器来讲述整个实现过程。要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,同时实现它的contextInitialized(ServletContextEvent    event)和contextDestroyed(ServletContextEvent    event)两个接口函数。考虑定时器有个建立和销毁的过程,看了前面两个接口函数,就不容置疑的把建立的过程置入 contextInitialized,把销毁的过程置入contextDestroyed了。

 

 

Java代码
  1. package com.derek.servlet;  
  2.   
  3. import javax.servlet.*;  
  4. import javax.servlet.http.*;  
  5. import com.derek.pub.TimerManager;  
  6. /** 
  7.  * 启动定时器的监听器 
  8.  * @author derek 
  9.  * @version 1.0 
  10.  */  
  11. public class TimerListener extends HttpServlet implements  
  12.         ServletContextListener {  
  13.     private TimerManager tm = null;  
  14.     //Notification that the web module is ready to process requests  
  15.     public void contextInitialized(ServletContextEvent sce) {  
  16.       int day,hour,min,sec;        
  17.       day = 26; hour = 16; min = 42; sec = 0;       
  18.       tm = new TimerManager(day,hour,min,sec);  
  19.     }  
  20.   
  21.     //Notification that the servlet context is about to be shut down  
  22.     public void contextDestroyed(ServletContextEvent sce) {  
  23.        tm.destoryTimer();  
  24.     }  
  25. }  
package com.derek.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import com.derek.pub.TimerManager;
/**
 * 启动定时器的监听器
 * @author derek
 * @version 1.0
 */
public class TimerListener extends HttpServlet implements
        ServletContextListener {
    private TimerManager tm = null;
    //Notification that the web module is ready to process requests
    public void contextInitialized(ServletContextEvent sce) {
      int day,hour,min,sec;      
      day = 26; hour = 16; min = 42; sec = 0;     
      tm = new TimerManager(day,hour,min,sec);
    }

    //Notification that the servlet context is about to be shut down
    public void contextDestroyed(ServletContextEvent sce) {
       tm.destoryTimer();
    }
}

 

 

 

Java代码
  1. package com.derek.pub;  
  2.   
  3. import java.util.Timer;  
  4. import java.util.Date;  
  5. import java.util.Calendar;  
  6.   
  7. /** 
  8.  * 定时器 
  9.  * @author derek 
  10.  * @version 1.0 
  11.  */  
  12. public class TimerManager {  
  13.     Timer t = null;  
  14.     public TimerManager(int day,int hour,int min,int sec) {  
  15.         time(day,hour,min,sec);  
  16.     }  
  17.    
  18.     public void time(int day,int hour,int min,int sec){      
  19.     Calendar c = Calendar.getInstance();  
  20.     c.set(Calendar.DAY_OF_MONTH,day);  
  21.     c.set(Calendar.HOUR_OF_DAY,hour);  
  22.     c.set(Calendar.MINUTE,min);  
  23.     c.set(Calendar.SECOND,sec);  
  24.     Date date = c.getTime();  
  25.     System.out.println(c.getTime());  
  26.     t= new Timer();  
  27.     MyTask mt = new MyTask();  
  28.     t.schedule(mt,date);  
  29.     }  
  30.     public void destoryTimer(){  
  31.     t.cancel();  
  32.     }  
  33. }   

 

 

Java代码
  1. package com.derek.pub;  
  2. import java.util.TimerTask;  
  3. /** 
  4.  * 计划任务代码 
  5.  * @author derek 
  6.  * @version 1.0 
  7.  */  
  8. public class MyTask extends TimerTask{  
  9.     public MyTask() {  
  10.     }  
  11.     /** 
  12.      * 任务块 
  13.      */  
  14.     public void run() {  
  15.         System.out.println("定时器RUN");  
  16.     }  
  17. }  
分享到:
评论

相关推荐

    swoole_timer:单支协程计时器

    3. `swoole_timer_clear($timer_id)`:根据给定的计时器ID取消计时器。 4. `swoole_timer_exists($timer_id)`:检查计时器是否存在。 5. `swoole_timer_info($timer_id)`:获取计时器的信息,包括时间间隔、已触发...

    boxing-timer:简单的拳击计时器

    本文将深入探讨一个名为"boxing-timer"的简易拳击计时器项目,该项目采用JavaScript语言实现,旨在为用户提供清晰、直观的计时服务。 首先,我们来了解项目的结构。这个拳击计时器设计为一个回合制,每个回合由三个...

    29 - Countdown Timer.rar

    《倒计时计时器——深入解析与应用》 在我们的日常生活中,倒计时计时器是一个非常实用的工具,无论是安排烹饪时间、管理学习计划还是组织活动,它都能帮助我们有效地管理时间。在软件开发领域,尤其是涉及到用户...

    使用html+js编写的一个网页端计时器源代码,支持正计时和倒计时,Material Design风格,还有好听的音效

    总之,这个项目展示了如何利用Web开发的基本技术——HTML、JavaScript和Material Design,来创建一个实用且具有吸引力的计时器应用。对于初学者来说,这是一个了解前端开发流程和实践交互设计的好例子;对于经验丰富...

    jquery.timer.js

    总结,jQuery Timer.js是一个轻量级且功能强大的计时器插件,它简化了Web开发中的定时任务处理。通过灵活的参数配置和控制方法,开发者可以轻松实现各种定时需求,提高代码效率。对于需要在页面上实现定时功能的...

    Podo-Timer-Online:在线番茄计时器

    【在线番茄计时器——Podo-Timer-Online】是一个基于Web技术的高效时间管理工具,主要用于帮助用户采用“番茄工作法”来提高生产力。它利用JavaScript编程语言实现,允许用户在任何有网络连接的设备上进行计时,无需...

    newtimer.github.io:这包括新计时器

    JavaScript提供了两个主要的内置计时器函数——`setTimeout()`和`setInterval()`,它们是Web开发中用来实现延迟执行或周期性执行任务的工具。 1. **setTimeout()** `setTimeout()`函数用于在指定的毫秒数后调用一...

    简单实用的jQuery计时器插件特效代码

    **jQuery计时器插件——timer.jquery** 在Web开发中,有时我们需要实现各种计时功能,比如倒计时、定时刷新等。`timer.jquery`就是这样一款适用于这些需求的JavaScript插件,它基于广泛使用的jQuery库,能够轻松地...

    Digital-Countdown-Timer:数字倒数计时器是使用HTML,CSS,JaaScript创建的

    数字倒数计时器是一种常见的Web应用程序,它能够显示从设定的时间点到当前时间的剩余时间,常用于活动倒计时、考试倒计时等场景。在这个项目中,"Digital-Countdown-Timer"是使用三种核心技术——HTML、CSS和...

    Simple-Workout-timer:具有HTML,CSS和JAVASCRIPT的简单锻炼计时器

    **简单锻炼计时器——基于HTML、CSS与JavaScript的实现** 简单锻炼计时器是一个实用的Web应用程序,它利用了前端三大核心技术:HTML(HyperText Markup Language)、CSS(Cascading Style Sheets)和JavaScript,来...

    番茄计时器:简单的番茄计时器。 我的责任-整个项目:)

    在这个项目中,"我的责任-整个项目:)"意味着开发者负责整个计时器的实现,从设计到编码,可能包括用户界面、计时逻辑、音效处理等多个方面。这通常涉及编程语言的选择和框架的应用。 标签"TypeScript"表明该项目...

    Flash倒计时图片切换

    3. **编写ActionScript代码**:在主时间轴或单独的影片剪辑上添加代码,创建一个计时器对象(Timer类),设置其间隔时间和重复次数。计时器触发时,将执行一个函数来更新显示的图片。 ```actionscript import flash...

    chessTimer:角象棋计时器

    《JavaScript实现的角象棋计时器——深入解析与应用》 在当今的棋类比赛中,计时器已经成为不可或缺的一部分,它不仅确保了比赛的公平性,也为对弈双方提供了紧张刺激的比赛氛围。角象棋计时器是针对角国际象棋设计...

    timer-com-css-html-e-js:创建一个计时器来练习 html css 和 javascript

    JavaScript是实现计时器功能的关键。我们需要编写函数来更新计时器的显示,处理开始/暂停和重置按钮的点击事件。以下是一个简单的计时器实现: ```javascript let timerInterval; let hours = 0, minutes = 0, ...

    meditation:该应用程序允许用户在计时器倒计时的同时收听声音

    "mindfulness"和"meditation-timer"标签进一步强调了应用的核心功能——正念冥想和计时器功能。 文件名“meditation-master”可能是指项目源代码的主分支或归档,暗示我们拥有的是这个冥想应用的完整开发源码。如果...

    TimeClock——用C#语言编写的一个时钟程序

    【标题】"TimeClock——用C#语言编写的一个时钟程序"揭示了这是一个利用C#编程语言实现的桌面时钟应用。...对于进一步提升,开发者还可以添加更多功能,如闹钟、计时器,或者让时钟支持自定义皮肤,从而增强用户体验。

    intention-timer

    "intention-timer"是一个基于JavaScript的计时器应用,主要设计用于帮助用户管理时间,提高工作效率。在项目中,"intention-timer-master"很可能指的是这个应用的源代码主分支或者版本库的名称,这通常包含了一系列...

    goit-js-hw-11-timer:11次JS作业资料库

    【标题】"goit-js-hw-11-timer:11次JS作业资料库" 涉及的是一个JavaScript编程的学习项目,其中包含了第11次作业——计时器的功能实现。在这个作业中,学生将学习如何使用JavaScript来创建一个能够显示、暂停、继续...

    open-timer:一个时间跟踪、分析工具

    当你开始一个任务时,你可以启动计时器,计时器会记录从开始到结束的精确时间。这个功能基于JavaScript的Date对象,可以精确到毫秒级别。当你完成任务并停止计时,数据会被保存,以便后续分析。 **三、任务管理和...

    C#定时提醒软件,有声音

    1. **System.Timers.Timer**:这是一个服务器级别的计时器,适合在多线程环境中使用。当你设置Interval属性后,Elapsed事件会在指定的间隔时间后被触发。在我们的定时提醒软件中,我们可以在这个事件处理程序中添加...

Global site tag (gtag.js) - Google Analytics