hongiawyai 2009-05-18 14:44
浏览 315
已采纳

如何定时执行servlet

请问谁知道有什么方法可以定时执行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做触发, 你可以根据自己的需要写自己的触发类

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥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