请问谁知道有什么方法可以定时执行servlet ,除页面标签方法、web.xml配制方法 除外。还有没有其它的方法。能不能写个简单的例子
2条回答 默认 最新
- mhjzqq923 2009-05-18 14:53关注
你的定时需要什么时候开始执行?
服务器启动?还是点击触发?
如果是服务器启动时就要开始执行,就需要用listener,这样需要在web.xml中增加配置。
如果要点击触发,就在你的触发类中调用timer吧,
前段时间帮朋友写了个, 你看下吧:
触发类---
[code="java"]import java.util.Timer;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class TimerTestAction implements ServletContextListener{
private Timer timer; public void contextDestroyed(ServletContextEvent servletcontextevent) { timer.cancel(); servletcontextevent.getServletContext().log("定时器销毁~~~"); System.out.println("定时任务结束~~"); } public void contextInitialized(ServletContextEvent servletcontextevent) { System.out.println("定时任务开始~~"); timer = new Timer(true); timer.schedule(new TimerRunAction(servletcontextevent.getServletContext()), 0, 5*1000); }
}
[/code]
定时器----
[code="java"]
import java.util.Calendar;
import java.util.TimerTask;import javax.servlet.ServletContext;
public class TimerRunAction extends TimerTask{
private static final int C_SCHEDULE_HOUR = 0;
private static boolean isRunning = false;
private ServletContext context = null;public TimerRunAction(ServletContext context){ this.context = context; } @Override public void run() { Calendar c = Calendar.getInstance(); if(!isRunning){ if(C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY)){ context.log("kaishi zhixing zhiding renwu~~"); } else{ context.log("shangyici renwu zhixing haiwei jieshu~~~"); } } }
}
[/code]
这个是用listener做触发, 你可以根据自己的需要写自己的触发类本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog