......下面就Servlet偵聽器結合Java定時器來講述整個實現過程。要運用Servlet偵聽器需要實現javax.servlet.ServletContextListener接口,同時實現它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)兩個接口函數。考慮定時器有個建立和銷毀的過程,看了前面兩個接口函數,就不容置疑的把建立的過程置入contextInitialized,把銷毀的過程置入contextDestroyed了。
package com.derek.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import com.derek.pub.TimerManager;
/**
* 啟動定時器的監聽器
* @author derek
* @version 1.0
*/
public class TimerListener extends HttpServlet implements
ServletContextListener {
private TimerManager tm = null;
//Notification that the web module is ready to process requests
public void contextInitialized(ServletContextEvent sce) {
int day,hour,min,sec;
day = 26; hour = 16; min = 42; sec = 0;
tm = new TimerManager(day,hour,min,sec);
}
//Notification that the servlet context is about to be shut down
public void contextDestroyed(ServletContextEvent sce) {
tm.destoryTimer();
}
}
import javax.servlet.*;
import javax.servlet.http.*;
import com.derek.pub.TimerManager;
/**
* 啟動定時器的監聽器
* @author derek
* @version 1.0
*/
public class TimerListener extends HttpServlet implements
ServletContextListener {
private TimerManager tm = null;
//Notification that the web module is ready to process requests
public void contextInitialized(ServletContextEvent sce) {
int day,hour,min,sec;
day = 26; hour = 16; min = 42; sec = 0;
tm = new TimerManager(day,hour,min,sec);
}
//Notification that the servlet context is about to be shut down
public void contextDestroyed(ServletContextEvent sce) {
tm.destoryTimer();
}
}
package com.derek.pub;
import java.util.Timer;
import java.util.Date;
import java.util.Calendar;
/**
* 定時器
* @author derek
* @version 1.0
*/
public class TimerManager {
Timer t = null;
public TimerManager(int day,int hour,int min,int sec) {
time(day,hour,min,sec);
}
public void time(int day,int hour,int min,int sec){
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH,day);
c.set(Calendar.HOUR_OF_DAY,hour);
c.set(Calendar.MINUTE,min);
c.set(Calendar.SECOND,sec);
Date date = c.getTime();
System.out.println(c.getTime());
t= new Timer();
MyTask mt = new MyTask();
t.schedule(mt,date);
}
public void destoryTimer(){
t.cancel();
}
}
import java.util.Timer;
import java.util.Date;
import java.util.Calendar;
/**
* 定時器
* @author derek
* @version 1.0
*/
public class TimerManager {
Timer t = null;
public TimerManager(int day,int hour,int min,int sec) {
time(day,hour,min,sec);
}
public void time(int day,int hour,int min,int sec){
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH,day);
c.set(Calendar.HOUR_OF_DAY,hour);
c.set(Calendar.MINUTE,min);
c.set(Calendar.SECOND,sec);
Date date = c.getTime();
System.out.println(c.getTime());
t= new Timer();
MyTask mt = new MyTask();
t.schedule(mt,date);
}
public void destoryTimer(){
t.cancel();
}
}
package com.derek.pub;
import java.util.TimerTask;
/**
* 計劃任務代碼
* @author derek
* @version 1.0
*/
public class MyTask extends TimerTask{
public MyTask() {
}
/**
* 任務塊
*/
public void run() {
System.out.println("定時器RUN");
}
}
import java.util.TimerTask;
/**
* 計劃任務代碼
* @author derek
* @version 1.0
*/
public class MyTask extends TimerTask{
public MyTask() {
}
/**
* 任務塊
*/
public void run() {
System.out.println("定時器RUN");
}
}