验证码生成--kaptcha

验证码生成与点击重新获取验证码

如图所示,本文档仅展示了验证码的生成和刷新显示。

在这里插入图片描述

1. 概述

系统通过生成随机验证码图像和文本。

2. 代码分析

2.1. Maven依赖
<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version>
</dependency>
  • 作用:引入kaptcha库,用于生成验证码图像。
2.2. CaptchaController
@Controller
public class CaptchaController {// 处理首页请求,生成验证码图像并返回页面@GetMapping("/")public String index(HttpSession session, Model model) throws IOException {// 生成验证码图像byte[] captchaImageBytes = CaptchaUtil.generateCaptchaImage(session);// 将验证码图像转换为Base64编码字符串String captchaImageBase64String = Base64.getEncoder().encodeToString(captchaImageBytes);// 从会话中获取验证码文本String captchaText = session.getAttribute("captchaText").toString();// 将验证码图像和文本添加到模型中model.addAttribute("captchaImage", captchaImageBase64String);model.addAttribute("captchaText", captchaText);// 返回首页模板return "index";}// 处理获取验证码请求,返回验证码图像和文本@GetMapping("/getCaptcha")@ResponseBodypublic R getCaptcha(HttpSession session) throws IOException {// 生成验证码图像byte[] captchaImageBytes = CaptchaUtil.generateCaptchaImage(session);// 从会话中获取验证码文本String captchaText = session.getAttribute("captchaText").toString();// 返回JSON格式数据,包含验证码图像和文本return R.ok().put("captchaImageBytes", captchaImageBytes).put("captchaText", captchaText);}
}
  • 作用:CaptchaController处理与验证码相关的HTTP请求。
  • index方法
    • GET请求"/":生成验证码图像,并将图像的Base64编码字符串和验证码文本添加到模型中,最后返回到前端页面。
  • getCaptcha方法
    • GET请求"/getCaptcha":与index方法类似,生成验证码图像并返回其Base64编码字符串和验证码文本,但以JSON格式返回给前端页面。
2.3. 前端页面
<body><!-- 显示验证码图像 --><img id="captchaImg" th:src="'data:image/jpeg;base64,' + ${captchaImage}" alt="Mountains" style="width:100px;height:50px;"><!-- 显示验证码文本 --><h2 id="captchaText" th:text="${captchaText}"></h2>
</body><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>var captchaImg = document.getElementById("captchaImg");var captchaText = document.getElementById("captchaText");captchaImg.addEventListener("click", function () {// 点击验证码图像时,发送GET请求获取新的验证码$.ajax({url: "/getCaptcha",type: "GET",success: function (data) {// 更新验证码图像和文本captchaImg.src = "data:image/png;base64," + data.captchaImageBytes;captchaText.innerHTML = data.captchaText;}});})
</script>
  • 作用:前端页面通过Thymeleaf模板引擎渲染验证码图像和文本,使用jQuery监听验证码图像的点击事件。
  • 点击事件:当验证码图像被点击时,通过AJAX请求"/getCaptcha"获取新的验证码图像和文本,并更新到页面上。

3. 总结

验证码生成与验证系统通过后端生成验证码图像和文本,并通过前端页面呈现给用户。本文档展示了验证码的生成和刷新显示。

4.源码 源码git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/689452.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV-android-sdk配置及使用(NDK)

opencv官网下载Android版Releases - OpenCV 下载好OpenCV-android-sdk并解压好,然后新建一个jni文件夹测试,测试项目目录结构如下: ├── jni │ ├── Android.mk │ ├── Application.mk │ └── test.cpp Application.mk: APP_STL := c++_static APP_CPP…

perf 中的 cpu-cycles event 介绍

perf 中的 cpu-cycles event 介绍 cycles简介 cycles事件记录处理器核心执行的时钟周期数。每个时钟周期代表处理器内部时钟振荡器的一个周期。这个事件通常用于衡量处理器的执行速度&#xff0c;因为它直接反映了指令执行所需的时间。一个较高的cycles计数可能意味着代码执行…

到东莞樟木头“中国作家第一村”来!这里大有文“樟”

樟木头&#xff0c;古称泰安&#xff0c;一直是康泰平安、物阜民丰之地。作为东莞唯一纯客家镇&#xff0c;传自中原先民的烂漫因子让这座城市崇文重礼&#xff0c;绿水青山更氤氲出古镇芳华。这个文章锦绣地&#xff0c;以其敢为人先、勇立潮头的姿态&#xff0c;成为了各种文…

JS代码随想录(一):数组

代码随想录 一、数组理论基础 二、LeetCode 704. 二分查找 三、LeetCode 27. 移除元素 四、LeetCode 977.有序数组的平方 五、LeetCode 209.长度最小的子数组 六、LeetCode 59.螺旋矩阵II 七、数组总结 一、数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组…

操作系统基础之磁盘

概述 基本概念 磁盘有正反两个盘面&#xff0c;每个盘面有多个同心圆&#xff0c;每个同心圆是一个磁道&#xff0c;每个同心圆又被划分为多个扇区&#xff0c;数据就被存在扇区中。 磁头首先寻找到对应磁道&#xff0c;然后等到磁盘进行周期旋转到指定的扇区&#xff0c;才…

redis深入理解之数据存储

1、redis为什么快 1&#xff09;Redis是单线程执行&#xff0c;在执行时顺序执行 redis单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的&#xff0c;Redis在处理客户端的请求时包括获取(socket 读)、解析、执行、内容返回 (socket 写)等都由一个顺序串行的主线…

代码审计-php篇之某CRM系统多处sql注入

&#x1f31f; ❤️ 作者&#xff1a;yueji0j1anke 首发于公号&#xff1a;剑客古月的安全屋 字数&#xff1a;3516 阅读时间: 35min 声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果…

【Python】PYQT5详细介绍

本专栏内容为&#xff1a;Python学习专栏 通过本专栏的深入学习&#xff0c;你可以了解并掌握Python。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;Python &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f3…

【C语言】路漫漫其修远兮,深入[指针]正当下

目录 一. 指针初步 1.概念定义 2.基本运算符 • 取地址操作符&#xff08;&&#xff09; • 解引⽤操作符 &#xff08;*&#xff09; 3.指针变量的⼤⼩ 二. 指针运算 1.指针- 整数 2.指针 - 指针 3.指针的关系运算 三. 野指针 1.野指针成因 • 指针未初始化 • …

详解drop,delete,truncate区别

在SQL中&#xff0c;"DROP"、"DELETE"和"TRUNCATE"是用于删除数据的不同命令&#xff0c;它们之间有一些重要的区别&#xff1a; DROP&#xff1a; DROP用于删除数据库对象&#xff0c;例如删除表、视图、索引、触发器等。使用DROP删除的对象将…

IPv6资产测绘哪家强?揭秘新一代网络空间资产测绘平台的独门秘籍

网络空间资产测绘&#xff0c;即通过一系列技术手段&#xff0c;对网络中的各类资产进行全面的发现、分类和定位&#xff0c;为各类用户提供精准的数据支撑和决策依据。网络空间资产测绘作为一门新兴的交叉学科&#xff0c;融合了计算机网络技术、数据挖掘、人工智能、信息安全…

电商中差评客服回复话术技巧

在电商行业&#xff0c;中差评是难以避免的现象&#xff0c;它们可能源于产品问题、物流延误、顾客期望与实际不符等多种原因。对于运营和客服团队来说&#xff0c;有效应对中差评不仅能够挽回客户的信任&#xff0c;还能提升品牌形象和服务质量。因此&#xff0c;掌握一些中差…