利用Hutool-(Java工具類)實現驗證碼校驗

第一篇是純利用現有JDK提供的繪圖類(ImageIO)類製作,這個過程比較複雜且需要了解

ImageIO

類。

這一篇文章是利用Hutool工具類來實現的,該工具類已經封裝驗證碼所需的相關類等,使用起來較為簡單和方便。

Hutool工具類介紹

利用Hutool-(Java工具類)實現驗證碼校驗

Hutool是一個小而全的Java工具類庫,透過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函式式語言般的優雅,讓Java語言也可以“甜甜的”。

Hutool中的工具方法來自每個使用者的精雕細琢,它涵蓋了Java開發底層程式碼中的方方面面,它既是大型專案開發中解決小問題的利器,也是小型專案中的效率擔當;

Web開發

與其它框架無耦合

高度可替換

Hutool官方網站:https://hutool。cn/

Hutool實現驗證碼生成

利用Hutool實現驗證碼校驗,校驗的Servlet與今天的第一篇是一樣的,唯一就是驗證碼的生成是不一樣的。利用Hutool生成驗證碼更快捷。

獲取Hutool:

jar包下載:https://repo1。maven。org/maven2/cn/hutool/hutool-all/5。8。8/

Maven:在專案的pom。xml的dependencies中加入以下內容:

cn。hutool

hutool-all

5。8。8

Maven相關可參閱:https://mp。weixin。qq。com/s/kOxaX6sDF6jyZRaK4KecKw

生成驗證碼:

設定驗證碼長、寬、驗證碼字元數、干擾元素個數:

LineCaptcha lineCaptcha = CaptchaUtil。createLineCaptcha(100,30,4,25);

在頁面顯示驗證碼及儲存驗證碼內容到Session:

try{ lineCaptcha。write(response。getOutputStream()); String code = lineCaptcha。getCode();//獲取驗證碼內容 request。getSession()。setAttribute(“piccode”,code); response。getOutputStream()。close(); }catch (IOException e){ e。printStackTrace(); }

這個就實現了驗證碼的生成,相比於第一篇自己製作簡潔了許多。

完整程式碼:

ImageGenerate。java

public class ImageGenerate extends HttpServlet { public void doGet (HttpServletRequest request,HttpServletResponse response) { LineCaptcha lineCaptcha = CaptchaUtil。createLineCaptcha(100,30,4,25); response。setContentType(“image/jpeg”); response。setHeader(“Pragma”, “No-cache”); try{ lineCaptcha。write(response。getOutputStream()); String code = lineCaptcha。getCode(); request。getSession()。setAttribute(“piccode”,code); response。getOutputStream()。close(); }catch (IOException e){ e。printStackTrace(); } }}

測試驗證碼生成

還是需要先配置web。xml檔案:

ImageGenerate com。kailong。servlet。ImageGenerate ImageGenerate /imageGenerate

利用Hutool-(Java工具類)實現驗證碼校驗

利用Hutool-(Java工具類)實現驗證碼校驗

其他樣式的驗證碼

上面展示的驗證碼是線段干擾樣式的驗證碼,Hutool工具類還提供了其他樣式的驗證碼:

CircleCaptcha -圓圈干擾驗證碼

利用Hutool-(Java工具類)實現驗證碼校驗

例:

//定義圖形驗證碼的長、寬、驗證碼字元數、干擾元素個數CircleCaptcha captcha = CaptchaUtil。createCircleCaptcha(200, 100, 4, 20);try{ lineCaptcha。write(response。getOutputStream()); String code = lineCaptcha。getCode();//獲取驗證碼內容 request。getSession()。setAttribute(“piccode”,code); response。getOutputStream()。close();}catch (IOException e){ e。printStackTrace();}

2。ShearCaptcha 扭曲干擾驗證碼

利用Hutool-(Java工具類)實現驗證碼校驗

例:

//定義圖形驗證碼的長、寬、驗證碼字元數、干擾線寬度ShearCaptcha captcha = CaptchaUtil。createShearCaptcha(200, 100, 4, 4);try{ lineCaptcha。write(response。getOutputStream()); String code = lineCaptcha。getCode();//獲取驗證碼內容 request。getSession()。setAttribute(“piccode”,code); response。getOutputStream()。close();}catch (IOException e){ e。printStackTrace();}

3。Hutool還提供了自定義驗證碼

有時候標準的驗證碼不滿足要求,比如我們希望使用純字母的驗證碼、純數字的驗證碼、加減乘除的驗證碼,此時我們就要自定義

CodeGenerator

例:

// 自定義純數字的驗證碼(隨機4位數字,可重複)RandomGenerator randomGenerator = new RandomGenerator(“0123456789”, 4);LineCaptcha lineCaptcha = CaptchaUtil。createLineCaptcha(200, 100);lineCaptcha。setGenerator(randomGenerator);// 重新生成codelineCaptcha。createCode();

ShearCaptcha captcha = CaptchaUtil。createShearCaptcha(200, 45, 4, 4);// 自定義驗證碼內容為四則運算方式captcha。setGenerator(new MathGenerator());// 重新生成codecaptcha。createCode();

公眾號本文地址:https://mp。weixin。qq。com/s/aeLqqgsqGBj3eqLilRtS-w

歡迎關注公眾號:愚生淺末。