web.xml监听
<listener>
<listener-class>
com.ow.cms.commons.ContextListener
</listener-class>
</listener>
类
package com.ow.cms.commons;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
public class ContextListener extends HttpServlet implements ServletContextListener{
Timer timer = new Timer();
Date operTime;
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {//
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
System.out.println("\n 执行应用监听器结束方法 destory context....");
timer.cancel();
}
@Override
public void contextInitialized(ServletContextEvent sce) {
/* // TODO Auto-generated method stub
System.out.println("\n 执行应用监听器初始方法 initialcontext....");
Calendar now=Calendar.getInstance();
now.add(Calendar.DATE,0);
now.set(Calendar.HOUR_OF_DAY, 14);
now.set(Calendar.MINUTE, 56);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);
//log.info("\n时间now为: "+now.toString()+" 毫秒数:"+now.getTimeInMillis());
System.out.println("\n时间now为:"+now.getTime().toString()+"毫秒数:"+now.getTimeInMillis());
operTime=new Date(now.getTimeInMillis());
//log.info("\n预设初始执行时间为: "+operTime);
System.out.println("\n预设初始执行时间为:"+operTime);
// timer.scheduleAtFixedRate(new FinDataTimerTask(), delay, period)
// timer.schedule(new FinDataTimerTask(),operTime, 86400000); //一天执行一次
timer.schedule(new Task(),operTime, 100000); //10秒钟执行一次,调试可用
*/
Date d = new Date();//获取服务器的时间。。。
Calendar c= Calendar.getInstance();
c.setTime(d);
if(c.get(Calendar.SECOND) == 30) //当前是1号
{
System.out.println("目前是半分钟");
}
else //当前不是 则从下个 开始执行定期任务
{
c.set(Calendar.MINUTE,c.get(Calendar.MINUTE)+ 1);//设置为下
c.set(Calendar.SECOND,0);//设置为下月的1号
Timer timer =new Timer();
timer.scheduleAtFixedRate(new Task()
{
public void run(){
//每天都来判断一下 如果当前日期是1号
则拿出党员的入党日期(年月)同当前月进行比较 如果相同 发送短信
//run函数里写下你的判断代码
System.out.println("你好!");
}},c.getTime(),60000); //每天执行一次run()方法...
}
}
}
<listener>
<listener-class>
com.ow.cms.commons.ContextListener
</listener-class>
</listener>
类
package com.ow.cms.commons;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
public class ContextListener extends HttpServlet implements ServletContextListener{
Timer timer = new Timer();
Date operTime;
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {//
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
System.out.println("\n 执行应用监听器结束方法 destory context....");
timer.cancel();
}
@Override
public void contextInitialized(ServletContextEvent sce) {
/* // TODO Auto-generated method stub
System.out.println("\n 执行应用监听器初始方法 initialcontext....");
Calendar now=Calendar.getInstance();
now.add(Calendar.DATE,0);
now.set(Calendar.HOUR_OF_DAY, 14);
now.set(Calendar.MINUTE, 56);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);
//log.info("\n时间now为: "+now.toString()+" 毫秒数:"+now.getTimeInMillis());
System.out.println("\n时间now为:"+now.getTime().toString()+"毫秒数:"+now.getTimeInMillis());
operTime=new Date(now.getTimeInMillis());
//log.info("\n预设初始执行时间为: "+operTime);
System.out.println("\n预设初始执行时间为:"+operTime);
// timer.scheduleAtFixedRate(new FinDataTimerTask(), delay, period)
// timer.schedule(new FinDataTimerTask(),operTime, 86400000); //一天执行一次
timer.schedule(new Task(),operTime, 100000); //10秒钟执行一次,调试可用
*/
Date d = new Date();//获取服务器的时间。。。
Calendar c= Calendar.getInstance();
c.setTime(d);
if(c.get(Calendar.SECOND) == 30) //当前是1号
{
System.out.println("目前是半分钟");
}
else //当前不是 则从下个 开始执行定期任务
{
c.set(Calendar.MINUTE,c.get(Calendar.MINUTE)+ 1);//设置为下
c.set(Calendar.SECOND,0);//设置为下月的1号
Timer timer =new Timer();
timer.scheduleAtFixedRate(new Task()
{
public void run(){
//每天都来判断一下 如果当前日期是1号
则拿出党员的入党日期(年月)同当前月进行比较 如果相同 发送短信
//run函数里写下你的判断代码
System.out.println("你好!");
}},c.getTime(),60000); //每天执行一次run()方法...
}
}
}