Springboot整合hutool验证码的实例代码

 更新时间:2024年08月16日 11:50:25   作者:程序员-小李  
在 Spring Boot 中,你可以将 Hutool 生成验证码的功能集成到 RESTful API 接口中,这篇文章主要介绍了Springboot整合hutool验证码,需要的朋友可以参考下

在 Spring Boot 中,你可以将 Hutool 生成验证码的功能集成到 RESTful API 接口中。

依赖

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

创建验证码

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 = "验证码")
public class CaptchaController {
    @GetMapping("/image")
    @ApiOperation("线段干扰的验证码")
    public void getCaptchaImage(HttpServletResponse response) throws IOException {
        //定义图形验证码的长和宽
        LineCaptcha captcha = CaptchaUtil.createLineCaptcha(200, 100);
        System.out.println("验证码:"+captcha.getCode());
        // 设置响应类型为图片
        response.setContentType("image/png");
        // 将验证码图片写入响应
        captcha.write(response.getOutputStream());
    }
    @GetMapping("/image2")
    @ApiOperation("圆圈干扰验证码")
    public void getCaptchaImage2(HttpServletResponse response) throws IOException {
        // 创建验证码对象
        //定义图形验证码的长、宽、验证码字符数、干扰元素个数
        CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20);
        System.out.println("验证码:"+captcha.getCode());
        // 设置响应类型为图片
        response.setContentType("image/png");
        // 将验证码图片写入响应
        captcha.write(response.getOutputStream());
    }
    @GetMapping("/image3")
    @ApiOperation("扭曲干扰验证码")
    public void getCaptchaImage3(HttpServletResponse response) throws IOException {
        //定义图形验证码的长、宽、验证码字符数、干扰线宽度
        ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 100, 4, 4);
        System.out.println("验证码:"+captcha.getCode());
        // 设置响应类型为图片
        response.setContentType("image/png");
        // 将验证码图片写入响应
        captcha.write(response.getOutputStream());
    }
    @GetMapping("/image4")
    @ApiOperation("自定义纯数字的验证码")
    public void getCaptchaImage4(HttpServletResponse response) throws IOException {
        //定义图形验证码的长、宽、验证码字符数、干扰线宽度
        // 自定义纯数字的验证码(随机4位数字,可重复)
        RandomGenerator randomGenerator = new RandomGenerator("0123456789", 4);
        LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
        lineCaptcha.setGenerator(randomGenerator);
        // 重新生成code
        lineCaptcha.createCode();
        // 设置响应类型为图片
        response.setContentType("image/png");
        // 将验证码图片写入响应
        lineCaptcha.write(response.getOutputStream());
    }
    @GetMapping("/image5")
    @ApiOperation("加减乘除的验证码")
    public void getCaptchaImage5(HttpServletResponse response) throws IOException {
        ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 45, 4, 4);
        // 自定义验证码内容为四则运算方式
        captcha.setGenerator(new MathGenerator(1));
        // 重新生成code
        captcha.createCode();
        MathGenerator mathGenerator = new MathGenerator();
//      用户输入校验
        System.out.println("验证结果:"+mathGenerator.verify(captcha.getCode(), "1"));
        // 设置响应类型为图片
        response.setContentType("image/png");
        // 将验证码图片写入响应
        captcha.write(response.getOutputStream());
    }
}

访问验证码接口

上面提到的5种样式,效果如下:

参考资料:文档

到此这篇关于Springboot整合hutool验证码的文章就介绍到这了,更多相关Springboot hutool验证码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一个通用的Java分页基类代码详解

    一个通用的Java分页基类代码详解

    这篇文章主要介绍了一个通用的Java分页基类代码详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • SpringBoot参数校验之@Valid的使用详解

    SpringBoot参数校验之@Valid的使用详解

    这篇文章主要通过示例为大家详细介绍一下介绍了SpringBoot参数校验中@Valid的使用方法,文中的示例代码讲解详细,需要的可以参考一下
    2022-06-06
  • 完美解决gson将Integer默认转换成Double的问题

    完美解决gson将Integer默认转换成Double的问题

    下面小编就为大家带来一篇完美解决gson将Integer默认转换成Double的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 简单实现Java验证码功能

    简单实现Java验证码功能

    这篇文章主要为大家详细介绍了简单实现Java验证码功能的代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 一文搞懂Spring中的注解与反射

    一文搞懂Spring中的注解与反射

    这篇文章主要为大家介绍了Spring中的注解与反射的原理与实现,文中的示例代码讲解详细,对我们了解Spring有一定的帮助,需要的可以参考一下
    2022-06-06
  • Java网络编程之入门篇

    Java网络编程之入门篇

    这篇文章主要介绍了Java网络编程入门,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Java Optional实践(小结)

    Java Optional实践(小结)

    这篇文章主要介绍了Java Optional实践(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • SpringBoot项目中使用EasyPOI方式导出合同Word文档的代码实现

    SpringBoot项目中使用EasyPOI方式导出合同Word文档的代码实现

    本文介绍了如何使用EasyPOI库在Java中导出Word合同文档,通过模板驱动的方式,可以灵活地将动态数据填充到预设的Word模板中,生成格式规范的合同文件,重点讲解了导入依赖、模板指令、制作模板和代码实现等步骤,需要的朋友可以参考下
    2026-01-01
  • Spring中配置ContextLoaderListener方式

    Spring中配置ContextLoaderListener方式

    这篇文章主要介绍了Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • spring boot2升级spring boot3的整体步骤流程

    spring boot2升级spring boot3的整体步骤流程

    从Spring Boot2到Spring Boot3的升级是一次全面而深刻的变革,它不仅带来了技术栈的更新和新特性的引入,还显著提升了应用的性能和开发效率,这篇文章主要给大家介绍了关于spring boot2升级spring boot3的整体步骤,需要的朋友可以参考下
    2025-08-08

最新评论