欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Java工具類Hutool實現(xiàn)驗證碼校驗功能

 更新時間:2022年10月15日 10:30:49   作者:愚生淺末  
這篇文章主要介紹了利用Java工具類Hutool實現(xiàn)驗證碼校驗功能,利用Hutool實現(xiàn)驗證碼校驗,校驗的Servlet與今天的第一篇是一樣的,唯一就是驗證碼的生成是不一樣的,利用Hutool生成驗證碼更快捷.需要的朋友可以參考下

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

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

Hutool工具類介紹

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

Hutool中的工具方法來自每個用戶的精雕細琢,它涵蓋了Java開發(fā)底層代碼中的方方面面,它既是大型項目開發(fā)中解決小問題的利器,也是小型項目中的效率擔當;

  • • Web開發(fā)

  • • 與其它框架無耦合

  • • 高度可替換

Hutool官方網(wǎng)站:https://hutool.cn/

Hutool實現(xiàn)驗證碼生成

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

獲取Hutool:

生成驗證碼:

設置驗證碼長、寬、驗證碼字符數(shù)、干擾元素個數(shù):

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

在頁面顯示驗證碼及保存驗證碼內(nèi)容到Session:

????try{
????????lineCaptcha.write(response.getOutputStream());
????????String?code?=?lineCaptcha.getCode();//獲取驗證碼內(nèi)容
????????request.getSession().setAttribute("piccode",code);
????????response.getOutputStream().close();
????????}catch?(IOException?e){
????????????e.printStackTrace();
????????}

這個就實現(xiàn)了驗證碼的生成,相比于第一篇自己制作簡潔了許多。

完整代碼:

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文件:

?????<servlet>
????????<servlet-name>ImageGenerate</servlet-name>
????????<servlet-class>com.kailong.servlet.ImageGenerate</servlet-class>
????</servlet>
????<servlet-mapping>
????????<servlet-name>ImageGenerate</servlet-name>
????????<url-pattern>/imageGenerate</url-pattern>
????</servlet-mapping>

其他樣式的驗證碼

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

  • 1. CircleCaptcha -圓圈干擾驗證碼

例:

//定義圖形驗證碼的長、寬、驗證碼字符數(shù)、干擾元素個數(shù)
CircleCaptcha?captcha?=?CaptchaUtil.createCircleCaptcha(200,?100,?4,?20);
try{
????lineCaptcha.write(response.getOutputStream());
????String?code?=?lineCaptcha.getCode();//獲取驗證碼內(nèi)容
????request.getSession().setAttribute("piccode",code);
????response.getOutputStream().close();
}catch?(IOException?e){
????e.printStackTrace();
}
  • 2. ShearCaptcha 扭曲干擾驗證碼

例:

//定義圖形驗證碼的長、寬、驗證碼字符數(shù)、干擾線寬度
ShearCaptcha?captcha?=?CaptchaUtil.createShearCaptcha(200,?100,?4,?4);
try{
????lineCaptcha.write(response.getOutputStream());
????String?code?=?lineCaptcha.getCode();//獲取驗證碼內(nèi)容
????request.getSession().setAttribute("piccode",code);
????response.getOutputStream().close();
}catch?(IOException?e){
????e.printStackTrace();
}
  • 3. Hutool還提供了自定義驗證碼

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

例:

//?自定義純數(shù)字的驗證碼(隨機4位數(shù)字,可重復)
RandomGenerator?randomGenerator?=?new?RandomGenerator("0123456789",?4);
LineCaptcha?lineCaptcha?=?CaptchaUtil.createLineCaptcha(200,?100);
lineCaptcha.setGenerator(randomGenerator);
//?重新生成code
lineCaptcha.createCode();
ShearCaptcha?captcha?=?CaptchaUtil.createShearCaptcha(200,?45,?4,?4);
//?自定義驗證碼內(nèi)容為四則運算方式
captcha.setGenerator(new?MathGenerator());
//?重新生成code
captcha.createCode();

到此這篇關于利用Java工具類Hutool實現(xiàn)驗證碼校驗功能的文章就介紹到這了,更多相關Hutool生成驗證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java volatile的幾種使用場景分析

    Java volatile的幾種使用場景分析

    volatile 是一種輕量級的同步機制,它能保證共享變量的可見性,同時禁止重排序保證了操作的有序性,但是它無法保證原子性,本文給大家總結(jié)了Java olatile的使用場景有哪些,并通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-03-03
  • Java SpringBoot高級用法詳解

    Java SpringBoot高級用法詳解

    這篇文章主要為大家詳細介紹了Java Spring Boot的一些高級用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-09-09
  • 詳解SpringBoot的jar為什么可以直接運行

    詳解SpringBoot的jar為什么可以直接運行

    SpringBoot提供了一個插件spring-boot-maven-plugin用于把程序打包成一個可執(zhí)行的jar包,本文給大家介紹了為什么SpringBoot的jar可以直接運行,文中有相關的代碼示例供大家參考,感興趣的朋友可以參考下
    2024-02-02
  • GC算法實現(xiàn)篇之并發(fā)標記清除

    GC算法實現(xiàn)篇之并發(fā)標記清除

    這篇文章主要為大家介紹了GC算法實現(xiàn)篇之并發(fā)-標記-清除,?CMS垃圾收集器在減少停頓時間上做了很多給力的工作,?大量的并發(fā)線程執(zhí)行的工作并不需要暫停應用線程
    2022-01-01
  • Spring Boot 配置文件詳解(小結(jié))

    Spring Boot 配置文件詳解(小結(jié))

    Spring Boot提供了兩種常用的配置文件,分別是properties文件和yml文件。本章重點介紹yml的語法和從配置文件中取值。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • MyBatis復雜Sql查詢實現(xiàn)示例介紹

    MyBatis復雜Sql查詢實現(xiàn)示例介紹

    在利用mybatis做查詢的時候,一般返回結(jié)果用resulttype,這種情況必須是查詢的結(jié)果在對應 的pojo類中有對應的,一般都是單表查詢,但是對于一些復雜的情況,比如需要用到多表查詢的時候,resultType不再適用,此時一般用resultMap來表示返回的結(jié)果
    2022-12-12
  • Spring?Boot的無縫銜接實踐案例

    Spring?Boot的無縫銜接實踐案例

    在快速迭代的軟件開發(fā)環(huán)境中,無縫銜接是提升開發(fā)效率、降低維護成本、增強系統(tǒng)穩(wěn)定性的關鍵,本文將深入解析Spring?Boot無縫銜接的幾大優(yōu)勢,并通過實際案例和深入分析,展示這些優(yōu)勢如何在項目中發(fā)揮作用
    2024-08-08
  • SpringCloud中使用webclient(get和post)請求微服務接口數(shù)據(jù)

    SpringCloud中使用webclient(get和post)請求微服務接口數(shù)據(jù)

    在SpringCloud項目中使用WebClient調(diào)用微服務時,涉及配置WebClient、發(fā)起get和post請求等操作,如請求頭設置、服務地址配置、數(shù)據(jù)轉(zhuǎn)換處理、異常處理等,避免在循環(huán)中使用WebClient請求、路徑設置細節(jié)以及數(shù)據(jù)返回處理技巧,本文旨在幫助理解和應用WebClient進行微服務調(diào)用
    2024-10-10
  • JDK10新特性之本地變量類型var的深入理解

    JDK10新特性之本地變量類型var的深入理解

    這篇文章主要給大家介紹了J關于DK10新特性之本地變量類型var的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JDK10具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-05-05
  • 深入了解Spring的Bean生命周期

    深入了解Spring的Bean生命周期

    這篇文章主要為大家介紹了Spring的Bean生命周期,文中的示例代碼講解詳細,對我們學習或工作有一定的參考價值,感興趣的可以學習一下
    2022-01-01

最新評論