java中timer在web.xml中的一个例子

简介: 分三步 一、定时执行的任务类Daemon 二、扩展HttpServlet的servlet 三、配置web.xml文件 细节如下: 一、定时执行的任务类Daemon   package com.

分三步

一、定时执行的任务类Daemon

二、扩展HttpServlet的servlet

三、配置web.xml文件

细节如下:

一、定时执行的任务类Daemon

 

package  com.resoft.recis.common.timer;

import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  java.sql.Statement;
import  java.text.SimpleDateFormat;
import  java.util.Calendar;
import  java.util.Date;
import  java.util.Timer;
import  java.util.TimerTask;

import  javax.servlet.ServletException;

/** */ /**
 * Function:
 * User     : zxs_9999
 * Date      : 
 
*/

public   class  Daemon  ... {
    
private static final Timer timer = new Timer();
    
    
// private static String sDBDriver = "com.ibm.db2.jcc.DB2Driver";
// private static String url="jdbc:db2://127.0.0.1:50000/test"; 
// private static String user="db2"; 
// private static String password="db2";     
 private static String sDBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
 
private static String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test"
 
private static String user="sql"
 
private static String password="sql"
 
 
 
private static Connection conn = null
 
private static ResultSet rs = null


 
static...{
  
try ...
   Class.forName(sDBDriver); 
   
  }
catch(java.lang.ClassNotFoundException e)...{
   System.out.println(
"in Jdbc() , ClassNotFoundException");
   e.printStackTrace(); 
  }
catch(Exception e)...{
   System.out.println(
"in Jdbc() , after ClassNotFoundException's Exception");
   e.printStackTrace(); 
  }

 }

 
public static void start()...{

  timer.scheduleAtFixedRate(
new TimerTask()...{
  
   
public void run()...{
             Calendar calendar 
= Calendar.getInstance();
             
int hour = calendar.get(Calendar.HOUR_OF_DAY);
             System.out.println(
"run hour: "+hour);
             
//20点以后再执行
             if(hour>=20 && hour<=22)...{

     ResultSet RS 
= executeQuery("SELECT * FROM OrgMng"); 
     Date workdate
=null
     
try ...{
      rs.next();
      workdate
=rs.getDate("workdate");
      RS.close();
      executeUpdate(
"update OrgMng set workdate ='"+changeDate(workdate)+"'");
     }
 catch (Exception e) ...{
      
// TODO: handle exception
      System.out.println("in start() , Exception");
      e.printStackTrace();
     }

             }
   
   }

   
  }
 
  ,
0,1000*60*60*2);//两个小时1000*60*60*2 自动执行一次
  System.out.println("timer 自动更新日期程序启动...");
 }

 
 
public static ResultSet executeQuery(String sql) ...{
  rs 
= null
  
try ...{  
  conn
= DriverManager.getConnection(url,user,password);
  Statement stmt 
= conn.createStatement(); 
  rs 
= stmt.executeQuery(sql); 
  }
catch(SQLException ex) ...
   System.out.println(
"in executeQuery , SQLException");
   ex.printStackTrace();
  }
catch(Exception e)...{
   System.out.println(
"in executeQuery , after SQLException's Exception");
   e.printStackTrace();
  }

  
return rs; 
 }

 
 
public static void executeUpdate(String sql) ...{
  
try ...
  
//conn = DriverManager.getConnection(url); 
  conn= DriverManager.getConnection(url,user,password);
  Statement stmt 
= conn.createStatement(); 
  stmt.executeUpdate(sql); 
  }
catch(SQLException ex) ...{
   System.out.println(
"in executeUpdate , SQLException");
   ex.printStackTrace();
  }
catch(Exception e)...{
   System.out.println(
"in executeUpdate , after SQLException's Exception");
   e.printStackTrace();
  }

 }

 
 
public static String changeDate(Date workdate)...{
    String temp
=null;
     
try...{
         SimpleDateFormat sdf 
= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         Calendar calendar
=Calendar.getInstance();
         calendar.setTime(workdate);
         calendar.add(Calendar.DATE, 
1);
        temp
=sdf.format(calendar.getTime());
        System.out.println(
"workdate is "+temp);
       }
catch(Exception e)...{
        System.out.println(
"in changeDate ,Exception");
        e.printStackTrace();
       }

  
return temp;
   }

    
    
public static void main(String[] args) throws ServletException ...{
     Daemon.start();

    }

}


 

二、扩展HttpServlet的servlet

 

package  com.resoft.recis.common.timer;

import  javax.servlet.http.HttpServlet;
import  javax.servlet.ServletException;

/** */ /**
 * User: zxs_9999
 * Date: 
 * Time:
 
*/

public   class  HttpImportDaemon  extends  HttpServlet ... {
    
public void init() throws ServletException ...{
        Daemon.start();
    }


}


 

三、配置web.xml文件

 

  < servlet >
  
< servlet-name > workdate </ servlet-name >
  
< display-name > chage workdate </ display-name >
  
< servlet-class >
   com.resoft.recis.common.timer.HttpImportDaemon
  
</ servlet-class >
  
< load-on-startup  />
 
</ servlet >

 
< servlet-mapping >
  
< servlet-name > workdate </ servlet-name >
  
< url-pattern > /* </ url-pattern >
 
</ servlet-mapping >

 

 


目录
相关文章
|
19天前
|
Java UED
Java Web 中forward 和 redirect 的区别
在Java Web开发中,页面跳转是构建用户界面和实现业务逻辑的重要组成部分。Forward(转发)和Redirect(重定向)是两种常见的跳转方式,它们分别具有不同的特点和适用场景。正确地选择和使用这两种跳转方式,有助于提高Web应用的性能、用户体验和代码可维护性。
20 4
|
8天前
|
SQL Java
20:基于EL与JSTL的产品管理页-Java Web
20:基于EL与JSTL的产品管理页-Java Web
20 5
|
8天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
22 3
|
2天前
|
前端开发 JavaScript Java
Java与Web开发的结合:JSP与Servlet
Java与Web开发的结合:JSP与Servlet
7 0
|
8天前
|
设计模式 前端开发 Java
19:Web开发模式与MVC设计模式-Java Web
19:Web开发模式与MVC设计模式-Java Web
19 4
|
8天前
|
设计模式 存储 前端开发
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
24 4
|
8天前
|
SQL Java 数据库连接
17:数据库连接池与Servlet整合-Java Web
17:数据库连接池与Servlet整合-Java Web
20 3
|
8天前
|
存储 前端开发 搜索推荐
13:Session机制实现用户登录与注销功能-Java Web
13:Session机制实现用户登录与注销功能-Java Web
24 3
|
8天前
|
XML 前端开发 Oracle
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
12 2
|
8天前
|
缓存 前端开发 Java
15:Servlet 3.0文件上传与下载-Java Web
15:Servlet 3.0文件上传与下载-Java Web
23 5