一个java定时器功能

本人刚刚大学毕业在一家软件公司上班,最近开发一些小的功能模块:

1、手机发送激活码功能,当用户一次点击五次时做某事:

代码:

package com.csair.sso.count;

import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;

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

import com.csair.sso.identifying.code.CheckInputNum;
import com.csair.sso.input.security.SecurityNum;
import com.csair.sso.user.change.ChangePwd;

// 监听类
public class ClearMap implements ServletContextListener {

 static final long time = 24 * 60 * 60 * 1000;
 final int hour = 23, min = 59, sec = 59;

 // 加载时执行
 public void contextInitialized(ServletContextEvent arg0) {
  // 执行时间
  Timer timer = new Timer();
  Calendar calendar = Calendar.getInstance();
  calendar.set(Calendar.HOUR_OF_DAY, hour);
  calendar.set(Calendar.MINUTE, min);
  calendar.set(Calendar.SECOND, sec);
  Date date = calendar.getTime();
  timer.schedule(new TimerClear(), date, time);
 }

 private class TimerClear extends TimerTask {// 实现TimerTask类
  public void run() {
   // 每隔一段时间执行
   clearMap(SecurityNum.getMap());
   clearMap(CheckInputNum.getMap());
   clearMap(ChangePwd.getMap());
  }

  // 要执行的方法
  public void clearMap(Map<String, Integer> map0) {
   Map<String, Integer> map = map0;
   map.clear();
  }
 }

 // 类销毁后执行
 public void contextDestroyed(ServletContextEvent arg0) {
 }
}

 

package com.csair.sso.count;

import java.util.Map;

/**
 * Title: PhoneIdentifyingCode.java
 *
 * @author 高孟阳
 * @date 2015-7-17 上午11:26:22
 * @version 1.0
 */
public final class CountNum {

 // 定义i用于次数累计
 int i;

 public String checkNum(Map<String, Integer> map, String sessionid) {
  // 清除map数据
  if (map.containsKey(sessionid)) {
   i = map.get(sessionid);
   ++i;
   map.put(sessionid, i);
   if (i < 5) {
    // 验证小于五次返回1
    return "1";
   } else {
    // 用户验证码超过五次返回0,并且清除当前用户sessionid
    map.remove(sessionid);
    return "0";
   }
  } else {
   // 当sessionid不在map中则加入
   map.put(sessionid, 1);
   return "1";
  }

 }

}


 

package com.csair.sso.input.security;

import java.util.HashMap;
import java.util.Map;

import com.csair.sso.count.CountNum;

// 密保问题此数限制
public class SecurityNum {
 static Map<String, Integer> map = new HashMap<String, Integer>();
 CountNum countNum = new CountNum();

//该方法用于jsp中调用,也可以写其他方法

 public String Num(String sessionid) {
  return countNum.checkNum(map, sessionid);
 }

 // 返回map
 public static Map<String, Integer> getMap() {

  return map;
 }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值