一個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;
 }
}

 

發佈了21 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章