>>分享Java Web开发技术,并且对孙卫琴的《Tomcat与Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 23750 个阅读者 刷新本主题
 * 贴子主题:  Java web使用监听器实现定时周期性执行任务的功能 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2024-03-09 00:45:43     消息  查看  搜索  好友  邮件  复制  引用

Java web使用监听器实现定时周期性执行任务的功能在做web项目的时候,有时需要做个定时的功能去执行某个任务,或者定时周期性去执行某个任务,如定时邮件发送、文件删除等。那么,我们就需要借助监听器去实现这一个功能,具体的实现过程如下:

1.配置web.xml,添加监听器指定类
<!-- 定时监听器配置 -->
<listener>
<listener-class>listener.DuetimeListener</listener-class>
</listener>

2.监听类实现ServletContextListener接口,实现监听功能


public class DuetimeListener implements ServletContextListener{
private Timer timer = null;

@Override
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
}

@Override
public void contextInitialized(ServletContextEvent event) {

// 添加tomcat日志
event.getServletContext().log("定时器已启动");
System.out.println("定时器启动");

try {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制时,24小时制
calendar.set(Calendar.MINUTE, 0);  // 控制分
calendar.set(Calendar.SECOND, 0);  // 控制秒

Date time = calendar.getTime(); // 执行任务的时间,可自行修改,此时为12:00:00

timer = new Timer(true);
//参数1:需要执行的类,参数2:执行时间,参数3:执行周期(参数可自行修改)
//类需要继承util的TimeTask,默认执行类下的run()方法;
timer.scheduleAtFixedRate(new TestTimeTask(), time, 1000 * 60 * 60 * 24);  //隔一天(周期性)扫描执行方法,

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

  3.功能类继承TimerTask类,默认执行run方法


public class TestTimeTask extends TimerTask {

@Override
public void run() {
System.out.println("定时扫描监听器程序开始执行,发送邮件");
deleteFile();
sendEmail();
//to do
}

public boolean deleteFile(){
System.out.println("定时执行删除文件的方法");
return true;
//to do
}

public boolean sendEmail(){
System.out.println("定时执行发送邮件的方法");
return true;
//to do
}

}

4.该demo,只用到web.xml、DuetimeListener.java、TestTimeTask.java三个文件,只是实现定时监听、周期性执行任务的功能,而邮件发送、文件删除等自定义功能需要自行添加上去,只需在run方法下修改邮件发送、文件删除等功能即可;

5.demo链接:http://download.csdn.net/detail/alan_liuyue/9834172
————————————————
原文链接:https://blog.csdn.net/alan_liuyue/article/details/71194454


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->类的生命周期
  JavaWeb开发-->JSP中使用JavaBean(Ⅱ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->创建非阻塞的HTTP服务器
  精通Spring-->创建综合购物网站应用
  Vue3开发-->组合(Composition)API
  HTML5 WebSocket的用法
  编写Servlet过滤器
  Servlet入门范例的创建和运行
  Servlet 生命周期
  Apache Internal Server Error 解决方法
  java生成图片验证码--封装生成图片验证码的工具类
  自查Web应用缺陷的有效测试方法
  Tomcat的虚拟主机的设置
  JSP自定义标签的用法
  使用Java Mail API收发邮件
  关于GBK,GB2312,UTF-8字符编码的区别
  在Tomcat9中配置HTTP/2
  理解JavaWeb应用中的绝对URI和相对URI
  ServletConfig和ServletContext详解(转移自: 《Tomcat与Java...
  OpenBSD下tomcat安装卸载须知
  更多...
 IPIP: 已设置保密
树形列表:   
沙龍娛樂城的玩家最主要做的事情,就是利用百家樂分析、... kericnnoe 2024-03-09 00:45:43
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。