监听器参考实例

package com.listener;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Timer;
import java.util.TimerTask;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.springframework.jdbc.JdbcUpdateAffectedIncorrectNumberOfRowsException;

import com.util.DateUtil;
import com.util.JdbcUtil;
/**
 * 
 * 工具类,公告定时器
 * 对超过规定时间未审核的公告进行自动审核
 * 
 * @author wushengxin
 * 
 */
public class NoticeListener implements ServletContextListener {
    Timer timer = null;

    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("工程销毁...");
        if (timer != null) {
            System.out.println("取消定时器");
            timer.cancel();
        }
    }
    /**
     * 
     * 
     * 判断公告是否已超过规定时间未审核,对未审核的公告进行审核
     * 
     * 
     */
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("工程启动...");

        timer = new Timer();

        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                Connection conn = null;
                Statement stmt = null;
                ResultSet rs = null;
                StringBuffer querySQL = new StringBuffer();
                StringBuffer updateSQL = new StringBuffer();

                querySQL.append("Select notice_id,notice_addtime");
                querySQL.append(" From T_Notice");
                querySQL.append(" where 1 = 1");
                querySQL.append(" and is_approve = 0");
                querySQL.append(" order by notice_id asc");
                String sysTime = DateUtil.getSysDateTime();
                try {
                    conn = JdbcUtil.getConn();
                    stmt = conn.createStatement();
                    rs = stmt.executeQuery(querySQL.toString());
                    while (rs.next()) {
                        int notice_id = rs.getInt("notice_id");
                        String notice_addtime = rs.getString("notice_addtime");

                        long diffdays = DateUtil.diffTimeForDay(sysTime,
                                notice_addtime);
                        if (diffdays >= 3) {
                            updateSQL.setLength(0);
                            updateSQL.append("Update T_Notice set ");
                            updateSQL.append(" is_approve = 1,");
                            updateSQL.append(" approve_user = '系统自动审核',");
                            updateSQL.append(" approve_time = '" + sysTime
                                    + "'");
                            updateSQL.append(" where 1= 1");
                            updateSQL.append(" and notice_id = '" + notice_id
                                    + "'");
                            stmt.addBatch(updateSQL.toString());
                        }
                    }
                    stmt.executeBatch();
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    JdbcUtil.closeResource(rs, stmt, conn);
                }

            }
        }, 5000, 1000 * 20);

    }

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值