应该让数据库作这个动作,可以建立一个job定期run

解决方案 »

  1.   

    我也碰到该问题,我的问题是当数据正式插入表中后,满六个月后将触发其它的表格申请要求前面处理,我想是不是可以用数据库的触发器来处理,虽然还没有直接找到,但我相信应该能做,另外实在不行,我想这样做:即在页面中做,在打开页面时,自动执行一个bean,该bean来处理这个问题,做完后,置当天执行标志,即每天只执行一次。
      

  2.   

    我想過在數據庫做﹐可在數據庫做如何能發送mail啊,
    如果在頁面做的話﹐只能在打開面時才能執行﹐在頁面沒有打時就不能觸發了
    還有什么更好的方法呢
      

  3.   

    写一个JAVA的服务程序,每过一定的时间读表记录,发送email就可以了.
      

  4.   

    http://community.csdn.net/Expert/topic/2974/2974781.xml?temp=.4880945
    你可以参考一下这个帖子
      

  5.   

    用ServletContextListener吧。
    代码附上:
    ===========
    package com.yaray.autotask;public class ProjectServletContextListner implements javax.servlet.ServletContextListener{  private static java.util.Timer timer = null; // 定时器  // 此方法仅在起动Web容器(或服务器)时被调用一次
      public void contextInitialized(javax.servlet.ServletContextEvent event) {
        timer = new java.util.Timer(true);
        javax.servlet.ServletContext ctx = event.getServletContext();
        ctx.log("定时器已启动,任务开始执行");
        /*
        //如果是用web.xml文件配置参数,则用下面的方式读取参数设置值
        long period = Long.valueOf((String)ctx.getInitParameter("period")).longValue();
        */    timer.schedule(new NewTask(), // 所需要执行的任务
                       0,             // 延迟时间 ( 0 --- 表示起动Web容器(或服务器)就立即执行此任务 )
                       5*1000         // 任务的执行间隔时间[单位:毫秒] (此处的间隔时间是5秒)
                      );  }// End method: contextInitialized(javax.servlet.ServletContextEvent event)  // 此方法仅在关闭Web容器(或服务器)时被调用一次
      public void contextDestroyed(javax.servlet.ServletContextEvent event) {
        timer.cancel();
        event.getServletContext().log("定时器已销毁,任务执行结束");
      }// End method: contextDestroyed(javax.servlet.ServletContextEvent event)}///:~/*在工程的WEB-INF\web.xml配置文件中加入如下三行,所计划的任务就会在Web容器(或服务器)启动时自动开始执行了:
      <listener>
        <listener-class>com.yaray.autotask.ProjectServletContextListner</listener-class>
      </listener>*//**
     * 在无特殊要求的情况下这个类无需修改;
     * 只需要与ProjectServletContextListner类保存在同一个.java文件中即可(或同一个文件夹中,需定义与其相同的包名)
     */
    class NewTask extends java.util.TimerTask{  private static boolean isRunning = false; // 运行标志(表示是否正在运行计划的任务)
      private static int t = 3; // 
      private CustomTask ct = TaskFactory.getTask();  public NewTask(){
      }  public void run(){
        if(!isRunning){ // 当未执行此任务时则开始执行
          if(ct != null){
            isRunning = true; // 将任务执行标志设置为正在执行
            ct.execute(); // 执行任务
            isRunning = false; // 将任务执行标志设置为执行完毕
          }else{
            if(t == 0) return;
            t--;
            System.out.println();
            System.out.println(" [Error] [com.yaray.autotask.NewTask] [Method: run] The task is null.");
            System.out.println(" [Error] [com.yaray.autotask.NewTask] [Method: run] The task is null.");
            System.out.println(" [Error] [com.yaray.autotask.NewTask] [Method: run] The task is null.");
          }
        }else{
          System.out.println("The task is running.");
        }
      }// End method: run()}///:~///////////////////////////////////////////////////////////////////////////////////////////////////////
    /* 单独保存为CustomTask.java文件 */
    package com.yaray.autotask;public interface CustomTask{  /**
       * 用于实现自定义的任务
       */
    public void execute();}///:~
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    /* 单独保存为TaskFactory.java文件 */
    package com.yaray.autotask;public class TaskFactory {  /**
       * 功能:返回实现了CustomTask接口的类的实例对象
       *
       *
       * 例: 如果实现了CustomTask接口的类名是MyTask,
       *       return new MyTask();
       *     如上这样就可以了.
       */
      public static CustomTask getTask(){
        return null; // 此处仅返回null,用户应根据实际情况作出修改
      }}///:~
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    package com.yaray.autotask;
    public MyTask implements com.yaray.task.CustomTask{  /* 任务执行主体(此处为实验代码,仅用来执行简单的信息输出语句) */
      public void execute(){
        System.out.println("在此方法中实现任务的主体");
      }}///:~
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
      

  6.   

    上面这几个程序共同完成一个在Web工程中定时执行指定任务的功能。更具体的说明可以参看程序中的说明。
      

  7.   

    同意 yaray(雅睿,生活在别处,工作在别墅) 
    你也可以写一servlet , 在servlet中启动一个线程用表发email