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

Springboot整合hutool驗(yàn)證碼的實(shí)例代碼

 更新時(shí)間:2024年08月16日 11:50:25   作者:程序員-小李  
在 Spring Boot 中,你可以將 Hutool 生成驗(yàn)證碼的功能集成到 RESTful API 接口中,這篇文章主要介紹了Springboot整合hutool驗(yàn)證碼,需要的朋友可以參考下

在 Spring Boot 中,你可以將 Hutool 生成驗(yàn)證碼的功能集成到 RESTful API 接口中。

依賴

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.14</version> <!-- 使用最新版本 -->
</dependency>

創(chuàng)建驗(yàn)證碼

package com.base.controller;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.CircleCaptcha;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.ShearCaptcha;
import cn.hutool.captcha.generator.MathGenerator;
import cn.hutool.captcha.generator.RandomGenerator;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@RestController
@RequestMapping("/api/captcha")
@Api(tags = "驗(yàn)證碼")
public class CaptchaController {
    @GetMapping("/image")
    @ApiOperation("線段干擾的驗(yàn)證碼")
    public void getCaptchaImage(HttpServletResponse response) throws IOException {
        //定義圖形驗(yàn)證碼的長(zhǎng)和寬
        LineCaptcha captcha = CaptchaUtil.createLineCaptcha(200, 100);
        System.out.println("驗(yàn)證碼:"+captcha.getCode());
        // 設(shè)置響應(yīng)類型為圖片
        response.setContentType("image/png");
        // 將驗(yàn)證碼圖片寫入響應(yīng)
        captcha.write(response.getOutputStream());
    }
    @GetMapping("/image2")
    @ApiOperation("圓圈干擾驗(yàn)證碼")
    public void getCaptchaImage2(HttpServletResponse response) throws IOException {
        // 創(chuàng)建驗(yàn)證碼對(duì)象
        //定義圖形驗(yàn)證碼的長(zhǎng)、寬、驗(yàn)證碼字符數(shù)、干擾元素個(gè)數(shù)
        CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20);
        System.out.println("驗(yàn)證碼:"+captcha.getCode());
        // 設(shè)置響應(yīng)類型為圖片
        response.setContentType("image/png");
        // 將驗(yàn)證碼圖片寫入響應(yīng)
        captcha.write(response.getOutputStream());
    }
    @GetMapping("/image3")
    @ApiOperation("扭曲干擾驗(yàn)證碼")
    public void getCaptchaImage3(HttpServletResponse response) throws IOException {
        //定義圖形驗(yàn)證碼的長(zhǎng)、寬、驗(yàn)證碼字符數(shù)、干擾線寬度
        ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 100, 4, 4);
        System.out.println("驗(yàn)證碼:"+captcha.getCode());
        // 設(shè)置響應(yīng)類型為圖片
        response.setContentType("image/png");
        // 將驗(yàn)證碼圖片寫入響應(yīng)
        captcha.write(response.getOutputStream());
    }
    @GetMapping("/image4")
    @ApiOperation("自定義純數(shù)字的驗(yàn)證碼")
    public void getCaptchaImage4(HttpServletResponse response) throws IOException {
        //定義圖形驗(yàn)證碼的長(zhǎng)、寬、驗(yàn)證碼字符數(shù)、干擾線寬度
        // 自定義純數(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();
        // 設(shè)置響應(yīng)類型為圖片
        response.setContentType("image/png");
        // 將驗(yàn)證碼圖片寫入響應(yīng)
        lineCaptcha.write(response.getOutputStream());
    }
    @GetMapping("/image5")
    @ApiOperation("加減乘除的驗(yàn)證碼")
    public void getCaptchaImage5(HttpServletResponse response) throws IOException {
        ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 45, 4, 4);
        // 自定義驗(yàn)證碼內(nèi)容為四則運(yùn)算方式
        captcha.setGenerator(new MathGenerator(1));
        // 重新生成code
        captcha.createCode();
        MathGenerator mathGenerator = new MathGenerator();
//      用戶輸入校驗(yàn)
        System.out.println("驗(yàn)證結(jié)果:"+mathGenerator.verify(captcha.getCode(), "1"));
        // 設(shè)置響應(yīng)類型為圖片
        response.setContentType("image/png");
        // 將驗(yàn)證碼圖片寫入響應(yīng)
        captcha.write(response.getOutputStream());
    }
}

訪問(wèn)驗(yàn)證碼接口

上面提到的5種樣式,效果如下:

參考資料:文檔

到此這篇關(guān)于Springboot整合hutool驗(yàn)證碼的文章就介紹到這了,更多相關(guān)Springboot hutool驗(yàn)證碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于java關(guān)鍵字this和super的區(qū)別和理解

    關(guān)于java關(guān)鍵字this和super的區(qū)別和理解

    這篇文章主要給大家介紹了關(guān)于java關(guān)鍵字this和super的區(qū)別和理解的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 分布式面試消息隊(duì)列解決消息重復(fù)保證消息順序

    分布式面試消息隊(duì)列解決消息重復(fù)保證消息順序

    這篇文章主要介紹了分布式面試問(wèn)題:分布式消息隊(duì)列如何解決消息重復(fù)并保證消息順序面試問(wèn)題解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java的基本數(shù)據(jù)類型和運(yùn)算方法(必看篇)

    Java的基本數(shù)據(jù)類型和運(yùn)算方法(必看篇)

    下面小編就為大家?guī)?lái)一篇Java的基本數(shù)據(jù)類型和運(yùn)算方法(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • tk-mybatis 的使用方法詳解

    tk-mybatis 的使用方法詳解

    tkmybatis是在mybatis框架的基礎(chǔ)上提供了很多工具,本文就詳細(xì)的介紹了一下tk-mybatis 的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • springboot中使用@NotNull注解無(wú)效解決方法

    springboot中使用@NotNull注解無(wú)效解決方法

    這篇文章主要給大家介紹了關(guān)于springboot中使用@NotNull注解無(wú)效的解決方法,進(jìn)行參數(shù)校驗(yàn)的時(shí)候,加了@NotNull注解,@Validated注解和@Valid注解,但是參數(shù)校驗(yàn)的時(shí)候不生效,需要的朋友可以參考下
    2023-08-08
  • 詳解Java實(shí)踐之建造者模式

    詳解Java實(shí)踐之建造者模式

    建造者模式是將一個(gè)復(fù)雜的對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。它隱藏了復(fù)雜對(duì)象的創(chuàng)建過(guò)程,它把復(fù)雜對(duì)象的創(chuàng)建過(guò)程加以抽象,通過(guò)子類繼承或者重載的方式,動(dòng)態(tài)的創(chuàng)建具有復(fù)合屬性的對(duì)象
    2021-06-06
  • SpringBoot實(shí)現(xiàn)短鏈接系統(tǒng)的使用示例

    SpringBoot實(shí)現(xiàn)短鏈接系統(tǒng)的使用示例

    由于短鏈接可能涉及到用戶隱私和安全問(wèn)題,所以短鏈接系統(tǒng)也需要符合相關(guān)的數(shù)據(jù)保護(hù)和安全標(biāo)準(zhǔn),本文主要介紹了SpringBoot實(shí)現(xiàn)短鏈接系統(tǒng)的使用示例,感興趣的可以了解一下
    2023-09-09
  • Java集合與數(shù)組區(qū)別簡(jiǎn)介及相互轉(zhuǎn)換實(shí)例

    Java集合與數(shù)組區(qū)別簡(jiǎn)介及相互轉(zhuǎn)換實(shí)例

    這篇文章主要介紹了Java集合與數(shù)組區(qū)別簡(jiǎn)介及相互轉(zhuǎn)換實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 一文詳解Java方法重載與遞歸應(yīng)用

    一文詳解Java方法重載與遞歸應(yīng)用

    方法重載 允許在同一個(gè)類中定義多個(gè)具有相同名稱的方法,但 參數(shù)列表 必須不同,遞歸 是一種讓函數(shù)調(diào)用自身的技術(shù),它提供了一種將復(fù)雜問(wèn)題分解為簡(jiǎn)單問(wèn)題的方法,這樣更容易解決,本文詳細(xì)介紹了Java方法重載與遞歸應(yīng)用,需要的朋友可以參考下
    2024-02-02
  • java應(yīng)用開(kāi)發(fā)之JVM運(yùn)行時(shí)內(nèi)存分析

    java應(yīng)用開(kāi)發(fā)之JVM運(yùn)行時(shí)內(nèi)存分析

    這篇文章主要介紹了java應(yīng)用開(kāi)發(fā)之JVM運(yùn)行時(shí)內(nèi)存,文中附含圖文示例內(nèi)容分析非常簡(jiǎn)要,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09

最新評(píng)論