前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >车辆违章查询和限行提醒程序 -- (4) JavaWeb实现定时任务

车辆违章查询和限行提醒程序 -- (4) JavaWeb实现定时任务

作者头像
浩Coding
发布2019-07-03 11:42:34
6740
发布2019-07-03 11:42:34
举报
文章被收录于专栏:浩Coding浩Coding

今天我们要设置定时任务,用JavaWeb的方式实现。通过网上搜寻资料发现,这个定时任务的实现使用Spring框架比较简单,当然也可以用监听器注入配合Timer的方法实现,这里我们讲的是后者的实现方法。

一 创建监听器类

代码语言:javascript
复制
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
 * 能让项目初始化的时候,就去将此定时程序跑起来,可以使用监听器,但是要在web.xml文件中配置对应的监听器
 * @author hao
 */
public class CarTimerTaskListener implements ServletContextListener {
 
    public void contextInitialized(ServletContextEvent sce) {
         new TimerManager();
    }
    public void contextDestroyed(ServletContextEvent sce) {
        // TODO Auto-generated method stub         
    }
}

二 创建定时任务类

代码语言:javascript
复制
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
 
/**
 * java定时任务,每天定时执行任务
 * @author hao
 *
 */
public class TimerManager {
    //时间间隔
    private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;  //24小时执行一次
    public TimerManager() {
       Calendar calendar = Calendar.getInstance();  
       /*** 定制每日07:00执行方法 ***/
       calendar.set(Calendar.HOUR_OF_DAY, 07);
       calendar.set(Calendar.MINUTE, 0);
       calendar.set(Calendar.SECOND, 0);
       Date date=calendar.getTime();

       //如果第一次执行定时任务的时间 小于 当前的时间
       //此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准
       if (date.before(new Date())) {
           date = this.addDay(date, 1);
       }
      
       System.out.println("定时任务制定的时间为:"+date);
       Timer timer = new Timer();
       CarTimerTask task = new CarTimerTask();
       
       //安排指定的任务在指定的时间开始进行重复的固定延迟执行。
       timer.schedule(task,date,PERIOD_DAY);
      }

      //增加几天
      public Date addDay(Date date, int num) {
       Calendar startDT = Calendar.getInstance();
       startDT.setTime(date);
       startDT.add(Calendar.DAY_OF_MONTH, num);
       return startDT.getTime();
      }
}

三 创建TimerTask类

代码语言:javascript
复制
/**
 * 具体的任务类
 * @author hao
 */
public class CarTimerTask extends TimerTask{
  public void run() {
        System.out.println("----开始执行任务--------------时间是:"+Utils.GetNowDate());
        //一些具体的任务逻辑
        SendEmail.Send("要发的邮件内容");
        SendMessage.Send("111111111", "短信内容");
    }
}

四 配置web.xml文件

代码语言:javascript
复制
<listener>
    <listener-class>com.bao.timer.CarTimerTaskListener</listener-class>
 </listener>

之后运行项目即可,程序会自动按照指定时间运行,实测代码没有bug。不过后期整合就 难说了。

这个系列短时间内暂且更新到这里,后期更新完SSM框架后,应该...会重构此项目,改的更好更自动化,暂且立个flag,回见啦,(* ̄rǒ ̄)

相关知识拓展链接:

https://www.cnblogs.com/dcncy/p/8205065.html

https://www.cnblogs.com/rese-t/p/7886651.html

https://www.cnblogs.com/eleven258/p/9671296.html

https://blog.csdn.net/comeonyangzi/article/details/70145190

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩Coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档