利用多執行緒實現簡易的驗證碼傳送,驗證,以及倒計時。

2021-08-28 04:41:59 字數 1287 閱讀 1130

因洒家在寫乙個專案時,必須用到手機驗證碼,且需要倒計時的功能,故此記錄。如有不足望指教。

框架:ssm。

起初是想直接封裝乙個類,用來裝手機號碼,和隨機生成的驗證碼,然後在controller中的方法中呼叫。但是這個樣子對資源的消耗不是最好的結局方案。於是就想著將這個封裝的物件成為controller中的全域性變數,因為springmvc是單例模式,故無論有多少個請求,都只會有乙個驗證碼物件,但是會出現乙個問題,就是下乙個請求的驗證碼會直接覆蓋下乙個。

於是就想到了用hashmap將每個物件存入。key為當前連線的請求手機號。

封裝類如下:

package com.shunluer.model;

public class phonecheck

public string getphone()

public void setphone(string phone)

public int getcheck()

public static int runcheck()

}

controller中新建三個全域性變數

static hashmapchecklist = new hashmap();

static hashmapthreadlist = new hashmap();

static threadgroup tg = new threadgroup("驗證碼執行緒組");

分別用來裝check物件,對每個check物件進行計時的執行緒條目,以及物件執行緒組。

因為使用者請求的時間間隔一般為1分鐘一次,而驗證碼倒計時為5分鐘,所以得在獲取驗證碼的部分進行如下判斷

if(threadlist.get(phone)!=null) 

}}

判斷之後在生成驗證碼。並進行倒計時

checktime checktime = new checktime(tg,phone);

checktime.start();

system.out.println("---------------");

tg.list();

threadlist.put(phone, checktime.getid());

checklist.put(phone, this.getservmgr().getuserservice().generat(phone));

return checklist.get(phone).getcheck()+"";

利用canvas製作簡易的驗證碼

製作簡易驗證碼的前提是,要學會canvas,懂得canvas的基本使用。不會的同學,這裡推薦乙個學習canvas的 canvas入門基礎系列 by tg w3cschool 驗證碼,其存在的意義便是防止有人用計算機完成大量的重複性的操作 例 暴力破解密碼,註冊廣 告號等 生成計算機識別不了或難以識別...

Python實現傳送郵件驗證碼

import smtplib import re from os import environ from os.path import exists from platform import system,node from time import strftime from email.mime....

C 實現手機傳送驗證碼

首先先需要註冊第三方 給大家推薦乙個 互億無線,註冊了之後每個使用者可以免費傳送50條簡訊。下面以c 實現手機傳送驗證碼為例。基本思路是本地生成乙個4位數的隨機數,然後以本地的使用者名稱 密碼 隨機數拼接成乙個字串,轉換為二進位制資料,以網路流的形式傳送到 互億無線 的 上,接下來的工作 就幫你完成...