zoukankan      html  css  js  c++  java
  • java Web监听器实现定时发送邮件

    首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util. TimerTask)

    由于我们希望当Web工程启动时,定时器能自动开始计时,这样在整个Web工程的生命期里,就会定时的执行任务,因此启动定时器的类不能是一般的类,此处用Servlet的监听器类来启动定时器,通过在配置文件里配置此监听器, 让其在工程启动时自动加载运行,存活期为整个Web工程生命期.

    首先要去实现一个监听任务:

    package com.sun.action;
    
    import java.util.Timer;
    
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    
    /**
     * @author  szy 
     * @version 创建时间:2018-4-5 上午10:46:11
     * 
     */
    public class MyTimerTask implements ServletContextListener {
    
    	private Timer timer = null;
    	@Override
    	public void contextDestroyed(ServletContextEvent event) {
    		// TODO Auto-generated method stub
    
    		timer.cancel(); 
    		 event.getServletContext().log("定时器销毁");
    		 
    	}
    
    	@Override
    	public void contextInitialized(ServletContextEvent event) {
    		// TODO Auto-generated method stub
    
    		//在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能 
    		 timer = new Timer(true); 
    		 event.getServletContext().log("定时器已启动");//添加日志,可在tomcat日志中查看到 
    		 //调用exportHistoryBean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时;
    		 //timer.schedule(new SendEmail(event.getServletContext()),0,24*60*60*1000); 
    		 timer.schedule(new SendEmail(event.getServletContext()),0,5*1000); 
    	}
    	
    
    
    }
    

      然后实现监听的方法类:

    package com.sun.action;
    
    import java.util.TimerTask;
    
    import javax.servlet.ServletContext;
    
    /**
     * @author  szy 
     * @version 创建时间:2018-4-5 上午10:50:00
     * 
     */
    public class SendEmail extends TimerTask {
    
    	private ServletContext context = null; 
    	public SendEmail(ServletContext context) 
    	{ 
    	 this.context = context; 
    	} 
    	
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		System.out.println("您的邮件已发送,清注意查收");
    	}
    
    }
    

      完成后,配置监听到web.xml里面去。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>TimerWeb</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      
        
      <listener>
        <listener-class>com.sun.action.MyTimerTask</listener-class>
      </listener> 
      
    
    </web-app>
    

     OK,通过Tomcat运行项目即可,可看到隔5s就会发送一条邮件,当然这里是模拟发送的邮件。

  • 相关阅读:
    poj 1579(动态规划初探之记忆化搜索)
    hdu 1133(卡特兰数变形)
    CodeForces 625A Guest From the Past
    CodeForces 625D Finals in arithmetic
    CDOJ 1268 Open the lightings
    HDU 4008 Parent and son
    HDU 4044 GeoDefense
    HDU 4169 UVALive 5741 Wealthy Family
    HDU 3452 Bonsai
    HDU 3586 Information Disturbing
  • 原文地址:https://www.cnblogs.com/sunxun/p/8721543.html
Copyright © 2011-2022 走看看