验证码生成--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.mzph.cn/news/835757.shtml

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

相关文章

第四百九十九回

文章目录 1. 概念介绍2. 使用方法2.1 固定样式2.2 自定义样式 3. 示例代码4. 内容总结 我们在上一章回中介绍了"GetMaterialApp组件"相关的内容&#xff0c;本章回中将介绍使用get显示SnackBar.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在介…

毕业论文凑字数——关于IVR自动语音应答交互式电话导航自动总机等等概念的一些剖析

目录 IVR毕业论文的讨巧思路IVR自动语音应答IVR的使用流程IVR的各种应用IVR的基本配置 一个小朋友的毕业论文要凑字数&#xff0c;所以推荐她讲一讲IVR&#xff0c;因为IVR可以翻译的名字很多&#xff0c;比如交互式语音应答&#xff0c;自动语音应答&#xff0c;自动语音服务&…

C语言例题36、判断一个数是否是回文数

题目要求&#xff1a;输入一个5位数&#xff0c;判断它是不是回文数。即12321是回文数 #include <stdio.h>int main() {int x;int ge, shi, qian, wan;printf("请输入一个5位数&#xff1a;");scanf("%d", &x);ge x % 10; //个sh…

Xshell连接提示“SSH服务器拒绝了密码”

原因1&#xff1a;数字锁没有打开 没有打开NumLock&#xff08;数字小键盘上面有一个【Num】按键&#xff09;&#xff0c;需要按键开启。 注意要检查NumLock灯是否亮起。 或者改成用字母键上面的数字键输入就好了。 原因2&#xff1a;root密码设置错误&#xff08;这个是比较常…

【Rollup】用rollup从0到1开发一个js插件并发布到npm

Rollup 是一个 JavaScript 模块打包器&#xff0c;专注于打包 ES6 模块将其编译回多种模块化格式&#xff0c;尤其适合打包库和框架&#xff0c;因为它可以生成更小、更高效的代码&#xff0c;并且特别适合将代码打包成可在浏览器中使用的库。 从0到1开发js插件 1.创建文件夹…

安全狗入选福建省网信系统2024年度网络安全技术支撑单位

近日&#xff0c;福建省委网信办会同国家互联网应急中心福建分中心确定并公示了福建省网信系统2024年度网络安全技术支撑单位名单。 作为国内云原生安全领导厂商&#xff0c;安全狗也成功入选。 据悉&#xff0c;此次遴选工作依据《中华人民共和国网络安全法》《国家网络安全事…

如何通过AI技术实现员工培训的革命性变革

AI个性化培训&#xff1a;开启员工潜力的新篇章 在当今这个信息爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的影响力已经渗透到社会的各个层面&#xff0c;包括教育与培训行业。AI技术正在彻底改变我们获取知识与技能的方式&#xff0c;特别是在员工培训领域…

IDEA使用技巧2—发布web项目

作者&#xff1a;私语茶馆 1.War包类型 发布Web项目有两种模式&#xff1a;war和war exploded&#xff0c; war模式&#xff1a;将WEB工程以包的形式上传到服务器 &#xff1b;war exploded模式&#xff1a;将WEB工程以当前文件夹的位置关系上传到服务器&#xff1b; war ex…

用于视频识别的快慢网络

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;用于视频识别的快慢网络1、文献摘要2、提出方法2.1、SlowFast模型2.2、SlowFast 提出思想 3、相关方法3.1、时空间卷积3.2、基于光…

词令蚂蚁庄园今日答案如何在微信小程序查看蚂蚁庄园今天问题的正确答案?

词令蚂蚁庄园今日答案如何在微信小程序查看蚂蚁庄园今天问题的正确答案&#xff1f; 1、打开微信&#xff0c;点击搜索框&#xff1b; 2、打开搜索页面&#xff0c;选择小程序搜索&#xff1b; 3、在搜索框&#xff0c;输入词令搜索点击进入词令微信小程序&#xff1b; 4、打开…

视频编辑软件pitivi基本功之创建标题片段

视频编辑软件pitivi基本功之创建标题片段 台式机的系统是openSUSE-Leap-15.5-DVD-x86_64 一、素材来源 《视频编辑软件pitivi基本功之使用SSR录制电脑屏幕》 https://blog.csdn.net/weixin_42145772/article/details/138597608?spm1001.2014.3001.5502 根据上面文章的方法得…

三层交换机与路由器连通上网实验

三层交换机是一种网络交换机&#xff0c;可以实现基于IP地址的高效数据转发和路由功能&#xff0c;通常用于大型企业、数据中心和校园网络等场景。此外&#xff0c;三层交换机还支持多种路由协议&#xff08;如OSPF、BGP等&#xff09;&#xff0c;以实现更为复杂的网络拓扑结构…

CCF CSP 认证考试历年真题满分题解(所有前四题)

CCF CSP 认证考试历年真题满分题解&#xff08;所有前四题&#xff09; 前言 原本刷题的动机仅仅是为研究生复试的机试环节做准备&#xff0c;我通过刷csp的真题来锻炼自己&#xff0c;因为上次的机试题目全部是csp真题&#xff0c;最后也是顺利上岸。空闲之际&#xff0c;我…

工业机器人应用实践之玻璃涂胶(篇三)

工业机器人 接上篇文章&#xff0c;浅谈一下实践应用&#xff0c;具体以玻璃涂胶为例&#xff1a; 了解工业机器人在玻璃涂胶领域的应用 认识工具坐标系的标定方法 掌握计时指令的应用 掌握人机交互指令的应用 掌握等待类指令用法&#xff08;WaitDI、WaitUnitl 等&#xff0…

【初阶数据结构】单链表基础OJ题讲解

前言 &#x1f4da;作者简介&#xff1a;爱编程的小马&#xff0c;正在学习C/C&#xff0c;Linux及MySQL。 &#x1f4da;本文收录与初阶数据结构系列&#xff0c;本专栏主要是针对时间、空间复杂度&#xff0c;顺序表和链表、栈和队列、二叉树以及各类排序算法&#xff0c;持…

创新指南 |风险管理:企业如何应对颠覆性创新带来的挑战

在当今充满变数的商业时代&#xff0c;颠覆性创新是企业突破传统、引领市场的关键。然而&#xff0c;真正的创新之旅并不平坦&#xff0c;充满了挑战和不确定性。文章将快速引导读者了解颠覆性创新的定义、挑战、以及如何通过设计思维、市场洞察、利益相关者沟通和文化变革等关…

障碍物识别软件的优缺点

在这个科技与人文关怀交织的时代&#xff0c;一款基于激光雷达技术的障碍物识别软件正悄然为视障人士的日常生活带来一场革命性的改变。这一款叫做“蝙蝠避障”的软件利用先进科技的力量&#xff0c;为盲人出行铺设了一条更加安全、独立的道路。今天&#xff0c;让我们从资深记…

nc生成临时凭证配置

nc生成临时凭证配置 要实现的功能&#xff1a; 审批时生成临时凭证弃审时删除临时凭证 前台配置 后台配置 BillReflectorServiceImpl.java package nc.pubimpl.jych.qtsq.voucher;import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; impo…

如何批量将十六进制数据转成bin文件

最近在做新项目遇到一个问题&#xff0c;我们要通过上位机把一堆数据通过串口发送给下位机存储&#xff0c;而上位机需要Bin文件。 解决办法&#xff1a; 1)创建一个记事本文件&#xff0c;然后将其后缀修改成.bin 2)然后打开notepad,新建一个文件&#xff0c;随便写下数据 我…

搭建私有仓库Nexus的流程以及npm包的开发和发布

搭建私有仓库 Nexus 的流程&#xff08;Ubuntu&#xff09;以及 npm 包的开发和发布 本文档是关于在 Ubuntu 上面搭建 Nexus&#xff0c;以及制作 npm 包并发布到 Nexus 的流程说明。 关于 Ubuntu Ubuntu 是一个基于 Linux 的操作系统&#xff0c;通常会用在服务器或者嵌入式…