当前位置: 首页 > ds >正文

Java后端快速生成验证码

Hutool是一个小而全的Java工具类库,它提供了很多实用的工具类,包括但不限于日期处理、加密解密、文件操作、反射操作、HTTP客户端等。

核心工具类:CaptchaUtil,CaptchaUtil 是 Hutool 提供的一个工具类,用于创建各种类型的验证码。它提供了静态工厂方法,帮助我们快速生成不同风格的验证码。

POM依赖

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.3</version>
</dependency>

CaptchaUtil

package cn.hutool.captcha;/*** 图形验证码工具*/
public class CaptchaUtil {/*** 创建线干扰的验证码,默认5位验证码,150条干扰线* @param width  图片宽* @param height 图片高*/public static LineCaptcha createLineCaptcha(int width, int height) {return new LineCaptcha(width, height);}/*** 创建线干扰的验证码* @param width     图片宽* @param height    图片高* @param codeCount 字符个数* @param lineCount 干扰线条数*/public static LineCaptcha createLineCaptcha(int width, int height, int codeCount, int lineCount) {return new LineCaptcha(width, height, codeCount, lineCount);}/*** 创建圆圈干扰的验证码,默认5位验证码,15个干扰圈* @param width  图片宽* @param height 图片高*/public static CircleCaptcha createCircleCaptcha(int width, int height) {return new CircleCaptcha(width, height);}/*** 创建圆圈干扰的验证码* @param width       图片宽* @param height      图片高* @param codeCount   字符个数* @param circleCount 干扰圆圈条数*/public static CircleCaptcha createCircleCaptcha(int width, int height, int codeCount, int circleCount) {return new CircleCaptcha(width, height, codeCount, circleCount);}/*** 创建扭曲干扰的验证码,默认5位验证码* @param width  图片宽* @param height 图片高*/public static ShearCaptcha createShearCaptcha(int width, int height) {return new ShearCaptcha(width, height);}/*** 创建扭曲干扰的验证码,默认5位验证码* @param width     图片宽* @param height    图片高* @param codeCount 字符个数* @param thickness 干扰线宽度*/public static ShearCaptcha createShearCaptcha(int width, int height, int codeCount, int thickness) {return new ShearCaptcha(width, height, codeCount, thickness);}/*** 创建GIF验证码* @param width 宽* @param height 高*/public static GifCaptcha createGifCaptcha(int width, int height) {return new GifCaptcha(width, height);}/*** 创建GIF验证码* @param width 宽* @param height 高* @param codeCount 字符个数*/public static GifCaptcha createGifCaptcha(int width, int height, int codeCount) {return new GifCaptcha(width, height, codeCount);}
}

前端页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录</title>
</head>
<body><form action="/login" method="post">用户名:<input type="text" name="username"><br>密码:<input type="password" name="password"><br>验证码:<input type="text" name="verificationCode"><img src="/verification-code/getImage"><input type="submit" value="登录"></form>
</body>
</html>

后端代码

@Controller
@RequestMapping("/verification-code")
@Slf4j
public class VerificationCodeController {@GetMapping("/getImage")public void generateCaptcha(HttpServletRequest request, HttpServletResponse response) throws IOException {// 1. 生成验证码图片// 图片宽:90 图片高:30 字符个数:4 干扰线宽度:3ICaptcha captcha = CaptchaUtil.createShearCaptcha(90, 30, 4, 3);// 2. 将生成的验证码(文本)保存到 Redis / Session 中// 存入Redis / Session后,在后续可通过拦截器进行校验request.getSession().setAttribute("verificationCode", captcha.getCode());// 3. 设置响应类型为 JPEG 图片response.setContentType("image/jpeg");// 4. 回写captcha.write(response.getOutputStream());}
}

验证码效果

在这里插入图片描述

http://www.xdnf.cn/news/5946.html

相关文章:

  • Python查询ES错误ApiError(406, ‘Content-Type ...is not supported
  • vr视频制作攻略(VR视频制作基础知识)
  • 漏桶算法的实际应用案例:数据库批量写入流量控制
  • 基于智能家居项目 解析DHT11温湿度传感器
  • hadoop中创建MySQL新数据库数据表
  • 数据库数据清洗、预处理与质量监控、 数据质量的核心概念
  • 《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码
  • 分布式任务调度XXL-Job
  • STM32 __main
  • 项目:博客系统——基于SSM框架Mybatis-plus
  • C++学习之路,从0到精通的征途:继承
  • hadoop3.x单机部署
  • 【计算机网络 第8版】谢希仁编著 第四章网络层 题型总结3 SDN OpenFlow
  • 工程师必读! 3 个最常被忽略的 TDR 测试关键细节与原理
  • ubuntu20.04安装qtcreator并打开ros工程
  • CD3MN 双相钢 2205 材质保温 V 型球阀:恒温工况下复杂介质控制的高性能之选-耀圣
  • 72.编辑距离
  • 11. CSS从基础样式到盒模型与形状绘制
  • KV cache 缓存与量化:加速大型语言模型推理的关键技术
  • AUTOSAR图解==>AUTOSAR_TPS_FeatureModelExchangeFormat
  • 榕壹云搭子系统技术解析:基于Spring Boot+MySQL+UniApp的同城社交平台开发实践
  • 国内USB IP商业解决方案新选择:硬件USB Server
  • 鸿蒙Next开发 获取APP缓存大小和清除缓存
  • 图片的require问题
  • 轻量级高性能推理引擎MNN 学习笔记 02.MNN主要API
  • 【工作记录】Kong Gateway入门篇之简介
  • 短板效应--双指针
  • ElasticSearch深入解析(十一):分页
  • LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
  • 二叉排序树(BST),平衡二叉树(AVL)