第一步:下載所需的Jar包
commons-beanutils.ja、commons-collections.jar、commons-logging.jar、commons-digester.jar、quartz.jar包
第二步:在web.xml下配置監聽
在web.xml下配置監聽的目的是為了項目編譯的時候就自動運行監聽下配置的業務類。
<!--監聽(作用就是啟動項目的時候就會運行這個類,這個類需要實現ServletContextListener接口)--> <listener> <listener-class> com.qt.quartz.QuartzMain </listener-class> </listener>
第三步:編寫com.qt.quartz.QuartzMain類
這個類只是作為啟動類,調用QuartzLoad類的2個方法,因為這個類是靜態的,所以可以用名稱直接點出方法名稱。
package com.qt.quartz; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class QuartzMain implements ServletContextListener { // 服務器啟動時執行該事件 @Override public void contextInitialized(ServletContextEvent arg0) { try { QuartzLoad.run(); } catch (Exception e) { e.printStackTrace(); } } // 服務器停止時執行該事件 @Override public void contextDestroyed(ServletContextEvent arg0) { try { QuartzLoad.stop(); } catch (Exception e) { e.printStackTrace(); } } }
第四步:編寫com.qt.quartz.QuartzLoad類
這個類里面有2個方法,一個是啟動quartz的方法,一個是關閉方法,這個類里面可以定制每隔多少時間循環調用業務類一次。
package com.qt.quartz; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.impl.StdSchedulerFactory; public class QuartzLoad { private static Scheduler sched; public static void run() throws Exception { //創建LzstoneTimeTask的定時任務 //三個參數,第一個是自己取得名稱、第二個是固定的、第三個是業務類 JobDetail jobDetail = new JobDetail("lzstoneJob",sched.DEFAULT_GROUP,QuartzJob.class); //三個參數,第一個是自己取得名稱、第二個是觸發器組名稱、第三個是自定義時間 CronTrigger trigger = new CronTrigger("lzstoneTrigger","lzstone","0/50 * * * * ?"); sched = new StdSchedulerFactory().getScheduler(); sched.scheduleJob(jobDetail,trigger); sched.start(); } //停止 public static void stop() throws Exception{ sched.shutdown(); } }
序號 說明 是否必填 允許填寫的值 允許的通配符
1 秒 是 0-59 , - * /
2 分 是 0-59 , - * /
3 小時 是 0-23 , - * /
4 日 是 1-31 , - * ? / L W
5 月 是 1-12 or JAN-DEC , - * /
6 周 是 1-7 or SUN-SAT , - * ? / L #
7 年 否 empty 或 1970-2099 , - * /
第五步:編寫QuartzJob.class類,自己的業務處理類
package com.qt.quartz; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class QuartzJob implements Job{ @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { // TODO Auto-generated method stub SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); System.out.println("時間表:"+sdf.format(new Date())); } }