• 会员卡管理系统技术解析(十八)Timer定时监听


    会员卡管理系统技术解析(十八)Timer定时监听

    在web应用中,有时候客户须要一些定时程序。不须要客户自己去操作。而是由应用程序自行触发(代理)运行某些操作。

    这个时候监听与定时器的配合使用就基本能够实现这个需求了。网上非常多代码并不完整,水平未到,看得太吃力了.以下以系统每天00:00:00进行的当日最大单据数维护进行实例解析。

    首先,建立相关的包河类,例如以下图:

    图1

    然后,在"web.xml"中对定时器和监听类注冊,代码例如以下:
    <servlet>
        <servlet-name>listener</servlet-name>
        <servlet-class>MEMBCERP.Servlet.servletlistener</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>listener</servlet-name>
        <url-pattern>/listener.do</url-pattern>
      </servlet-mapping>

    接着,就是定时监听的编写了,代码例如以下:
    package MEMBCERP.Servlet;
    
    import java.util.Timer;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    
    public class servletlistener extends HttpServlet {
    	/*监听转发系统代理事件*/
    	private Timer timer = null;   
        public void init(ServletConfig config) throws ServletException{  
            super.init(config);    
            timer = new Timer(true);  
            timer.schedule(new Todo(), 0, 1000);  /*參数:方法重定向,延迟,运行时间的间隔*/
        }  	
    	
    }
    最后,便是监听到符合程序,满足条件便自行进行系统维护了,代码例如以下:
    package MEMBCERP.Servlet;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.TimerTask;
    
    import MEMBCERP.IService.JianKaYuFaFangIService;
    import MEMBCERP.Service.JianKaYuFaFangService;
    import MEMBCERP.pojo.SysMaxNumber;
    public class Todo extends TimerTask{
    	
        @Override
        public void run(){
        	SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");//设置日期格式
    		String timDate=df.format(new Date());
    		//监听是否进行日常维护
    		if (timDate.equals("00:00:00")) {
    			ChuShiHuaZuiDaDanJuShu();
    		}
        }
        
        public JianKaYuFaFangIService jianKaYuFaFangService=new JianKaYuFaFangService(); //实例化类
        //初始化当日最大单据数
        public void ChuShiHuaZuiDaDanJuShu() {
        	SysMaxNumber lstZuiDaDanJuShu=new SysMaxNumber();
    		lstZuiDaDanJuShu.setDiaoBoJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setFaFangJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setGuaShiHuiFuJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setHuiYuanKaZuoFeiJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setHuiYuanKaHuanKaJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setHuiYuanKaYouXiaoQiGengGaiJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setHuiYuanKaZhuangTaiBianDongJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setId(0);
    		lstZuiDaDanJuShu.setKuCunKaYouXiaoQiBianGengJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setKuCunKaZuoFeiJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setLingKaJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setTuiLingJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setGuaShiJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setJianKaJiLuZuiDaShu(0);
    		lstZuiDaDanJuShu.setKuCunKaZuoFeiHuiFuJiLuZuiDaShu(0);
    		this.jianKaYuFaFangService.UpdateZuiDaDanJuShu(lstZuiDaDanJuShu);
    	}
    }
    

    到此,会员卡管理系统技术解析(十八)Timer定时监听 解析完成.如有不懂可留言提问.
    注意:仅供学习,禁止用于商业用途!

    否则,后果自负。
    @终于解析权归本人全部

  • 相关阅读:
    快速开始
    阿里为什么选择RocketMQ
    4 分布式消息队列的协调者
    9 首个Apache中间件顶级项目
    3、用适合的方式发送和接收消息
    2 生产环境下的配置和使用
    TOMCAT加载两次war包(重复加载)
    Google Protocol Buffer 的使用(二)
    Google Protocol Buffer 的使用(一)
    PostgreSQL及PostGIS使用
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5101943.html
Copyright © 2020-2023  润新知