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

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

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

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

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

Hutool工具類介紹

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

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

  • • Web開發(fā)

  • • 與其它框架無耦合

  • • 高度可替換

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

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

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

獲取Hutool:

生成驗(yàn)證碼:

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

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

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

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

這個(gè)就實(shí)現(xiàn)了驗(yà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();
????????}
????}
}

測試驗(yàn)證碼生成

還是需要先配置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>

其他樣式的驗(yàn)證碼

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

  • 1. CircleCaptcha -圓圈干擾驗(yàn)證碼

例:

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

例:

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

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

例:

//?自定義純數(shù)字的驗(yàn)證碼(隨機(jī)4位數(shù)字,可重復(fù))
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);
//?自定義驗(yàn)證碼內(nèi)容為四則運(yùn)算方式
captcha.setGenerator(new?MathGenerator());
//?重新生成code
captcha.createCode();

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

相關(guān)文章

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

    Java volatile的幾種使用場景分析

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

    Java SpringBoot高級(jí)用法詳解

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

    詳解SpringBoot的jar為什么可以直接運(yùn)行

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

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

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

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

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

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

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

    Spring?Boot的無縫銜接實(shí)踐案例

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

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

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

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

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

    深入了解Spring的Bean生命周期

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

最新評(píng)論