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

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技术详解(Ⅱ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->ServerSocket用法详解
  精通Spring-->
  Vue3开发-->绑定CSS样式
  [求助] javax.servlet 不存在
  http状态码大全100-599状态详解
  从HttpServletRequest对象中获取各种路径信息
  Servlet 国际化
  Servlet 点击计数器范例
  Servlet 访问客户端 HTTP 请求 信息
  详解如何给Tomcat配置Https/ssl证书
  网页上实现分享到微信和QQ等的源代码
  用信鸽来解释HTTPS协议
  关于JSTL标签库版本的升级和下载
  好消息:孙卫琴老师最新制作的JavaWeb开发视频教程在本站发布...
  Servlet的非阻塞I/O处理方式
  HTTP各个协议版本的特点
  EL表达式语言介绍
  用Maven部署war包到远程Tomcat服务器
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 kericnnoe 
威望: 未知
级别: 未知
魅力: 未知
经验: 未知
现金: 未知
发文章数: 未知
注册时间: 未知
 复制  引用


沙龍娛樂城的玩家最主要做的事情,就是利用百家樂分析、百家樂贏錢公式、百家樂攻略等百家樂投注技巧,去推測沙龍百家樂下一局會開出莊家還是閒家。但其實下注SA百家樂需要的也並不是只有技巧而以,有些心法、心態也是相當重要的,也可以說技巧跟心法是缺一不可的存在,不管是缺少哪一項,就不法穩定的在SA百家樂贏錢了
发文章时间 2025-06-01 08:43:20
 IPIP: 已设置保密 1 楼     
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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