超级好用!一款基于JAVA实现的开源免费验证码系统,1行代码得到炫酷的验证码
个人网站:IT知识小屋 版权:本文由【IT学习日记】原创、在CSDN首发、需要转载请联系博主 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦文章目录简介验证码形式快速应用高级特性开源地址使用手册写在最后简介Happy-Captcha是一款基于JAVA实现的免费验证码工具旨在花最短时间、用最少代码实现最丰富的验证码功能。它提供图片和动画2种呈现形式支持多种形式的验证码(如图片、文字、算术表达式)并提供丰富的API接口支持用户自定义样式、宽高等参数满足用户不同场景下的使用需求。验证码形式验证码支持内容包括中文(收录3500个常用汉字)阿拉伯数字(09)中文数字(零至九)中文大写数字(零至玖)数字与字母混合(09-az-AZ)数字与小写字母混合(09-az)数字与大写字母混合(09-AZ)纯小写字母纯大写字母大小写字母混合以及运算表达式(阿拉伯数字运算表达式和中文运算表达式)等12种类型。CaptchaTypeIMAGEANIMATIONCHINESENUMBERNUMBER_ZH_CNNUMBER_ZH_HKDEFAULTWORDWORD_LOWERWORD_UPPERWORD_NUMBER_LOWERWORD_NUMBER_UPPERARITHMETICARITHMETIC_ZH快速应用1、引入依赖dependency groupIdcom.ramostear/groupId artifactIdHappy-Captcha/artifactId version1.0.1/version /dependency2、生成验证码对于HappyCaptcha而言只有request和response是必须提供的参数其余参数都可以使用缺省值。在默认情况下HappyCaptcha生成的验证码以图片形式展现内容为09-az-A~Z的字符随机组合字符长度为5图片宽度为160高度为50字体为微软雅黑。在默认情况下你只需要书写一行代码即可生成漂亮的验证码图片,如下 Controller public class HappyCaptchaController{ GetMapping(/captcha) public void happyCaptcha(HttpServletRequest request,HttpServletResponse response){ HappyCaptcha.require(request,response).build().finish(); } }3、校验如果在校验过程中需要忽略字母大小写第三个参数设置为true如果需要强校验则设置为false。Controller public class CaptchaController{ PostMapping(/verify) public String verify(String code,HttpServletRequest request){ //Verification Captcha boolean flag HappyCaptcha.verification(request,code,true); if(flag){ //Other operations... } } }4、清理当验证码被使用后你可以通过HappyCaptcha类中的remove()方法将Session中存放的验证码清理掉。下面是清理验证码的代码示例除HappyCaptcha提供的默认方法你也可以在需要操作的地方手动清理Session中存放的验证码HappyCaptcha验证码的Key为“happy-captcha”。Controller public class HappyCaptchaController{ GetMapping(/remove/captcha) public void removeCaptcha(HttpServletRequest request){ HappyCaptcha.remove(request); } }高级特性style()HappyCaptcha提供两种验证码展现形式图片和动画。默认的展现形式为图片可以通过style()方法修改默认值。style()方法的值由CaptchaStyle类提供可供选择的值有IMG和ANIM。style()使用示例如下HappyCaptcha.require(request,response) .style(CaptchaStyle.ANIM) .build().finish();type()HappyCaptcha一共提供了12种验证码类型你可以自由选择其中的一种类型作为验证码的内容形式。默认情况下验证码使用数字和大小写字母的混合形式。验证码类型值由CaptchaType类提供内容如下表值说明DEFAULT数字、大小写字母随机组合ARITHMETIC加、减、乘算数运算表达式ARITHMETIC_ZH中文简体加、减、乘算数运算表达式描述CHINESE常见汉字3500个随机组合NUMBER0~9数字随机组合NUMBER_ZH_CN中文数字零至九随机组合NUMBER_ZH_HK中文繁体数字零至玖随机组合WORD大小写字母随机组合WORD_LOWER小写字母随机组合WORD_UPPER大写字母随机组合WORD_NUMBER_LOWER数字、小写字母随机组合WORD_NUMBER_UPPER数字、大写字母随机组合HappyCaptcha.require(request,response) .type(CaptchaType.CHINESE) .build().finish();length()用于设置验证码字符长度默认情况下缺省值为5。你可以通过以下方式对验证码字符长度进行控制HappyCaptcha.require(request,response) .length(6) .build().finish();width()width()方法可对验证码图片的宽度进行调节默认的缺省值为160。使用方式如下HappyCaptcha.require(request,response) .width(180) .build().finish();height()同width()方法一样height()方法用于设置验证码图片的高度默认缺省值为50。使用方式如下HappyCaptcha.require(request,response) .height(60) .build().finish();font()如果你想改变验证码的字体可通过font()方法进行设置默认缺省字体为微软雅黑。HappyCaptcha内置了四种字体可以通过Fonts类进行调用。HappyCaptcha.require(request,response) .font(Fonts.getInstance().zhFont()) .build().finish();链式调用HappyCaptcha支持链式调用可同时对验证码的多个属性进行设置。例如GetMapping(/captcha) public void captcha(HttpServletRequest req,HttpServletResponse res){ HappyCaptcha.require(req,res) .style(CaptchaStyle.ANIM) //设置展现样式为动画 .type(CaptchaType.CHINESE) //设置验证码内容为汉字 .length(6) //设置字符长度为6 .width(220) //设置动画宽度为220 .height(80) //设置动画高度为80 .font(Fonts.getInstance().zhFont()) //设置汉字的字体 .build().finish(); //生成并输出验证码 }开源地址使用手册点击下方的【IT学习日记】回复【资源】领取如果这篇文章对您有帮助请一定帮我点个“关注”和“点赞”,这对我非常重要。我将会继续推荐更多优质项目和新闻。写在最后1000优质开源项目更新进度266/1000。如需更多类型优质项目推荐请在文章后留言。

相关新闻

【2026年】大语言模型优化暖通AI节能调度

【2026年】大语言模型优化暖通AI节能调度

实验室暖通系统能耗高,传统的定时开关、人工调参很难做到精细节能。大语言模型能读数据、能写策略,正在给暖通节能调度带来新思路。一、大模型在暖通里怎么用1.1 负荷预测更准大模型结合历史能耗、天气、实验排期等数据,预测下一时段通风与空…

2026/9/22 18:53:03 阅读更多 →
GB28181协议与EasyCVR在智慧农场监控中的应用

GB28181协议与EasyCVR在智慧农场监控中的应用

1. 智慧农场监管可视化方案概述在现代化农业生产中,视频监控技术正发挥着越来越重要的作用。基于国标GB28181协议的EasyCVR视频监控平台,为智慧农场提供了一套完整的可视化监管解决方案。这套系统不仅能够实现农场各个区域的实时监控,还能通过…

2026/9/14 13:06:23 阅读更多 →
ansible 实例 -- 用于 Linux 文件系统的操作 -- 如何使用 Ansible 任务在远程系统上重命名文件或目录?

ansible 实例 -- 用于 Linux 文件系统的操作 -- 如何使用 Ansible 任务在远程系统上重命名文件或目录?

如何使用 Ansible 重命名文件/目录。 首先,让我澄清一下,我想提出一个仅使用 Ansible 原生模块的解决方案,因此不使用 shell 模块来调用 Unix 工具 mv。 今天我们来谈谈 Ansible 的两个模块 copy 和 file。 全名分别是 ansible.builtin.copy 和 ansible.builtin.file,它…

2026/9/15 5:22:28 阅读更多 →

最新新闻

梅花卷:拆解高频面试题背后的底层逻辑

梅花卷:拆解高频面试题背后的底层逻辑

梅花卷:拆解高频面试题背后的底层逻辑 面试被问原理答不上来,是应届生最尴尬的时刻。 你背了八股文,却过不了“梅花卷”式的深度追问。 这不仅是知识盲区,更是思维断层,必须靠实战补齐。 01 一句话原理:从“背题”到“解题”的认知跃迁…

2026/9/22 18:52:58 阅读更多 →
3个维度讲透PASOON选型:从入门到精通避坑指南

3个维度讲透PASOON选型:从入门到精通避坑指南

3个维度讲透PASOON选型:从入门到精通避坑指南 刚拿到一套PASOON的示例代码,本地环境配置半天,跑起来全是红叉?别急着删库重装,大概率是依赖版本和运行上下文没对齐。很多老手都栽在这个坑里,看着官方文档里的API调用示例,明明一行不差…

2026/9/22 18:52:58 阅读更多 →
3步搞定cad怎么测面积,告别官方文档坑

3步搞定cad怎么测面积,告别官方文档坑

3步搞定cad怎么测面积,告别官方文档坑 官方文档翻了三遍还是找不到重点?别急,这正是很多工程师在 实战项目 中遇到的真实困境。AutoCAD…

2026/9/22 18:52:58 阅读更多 →
3个底层逻辑拆解中国移动福:面试必问的手写实现细节

3个底层逻辑拆解中国移动福:面试必问的手写实现细节

3个底层逻辑拆解中国移动福:面试必问的手写实现细节 面试被问原理答不上来,是不是你的常态? 很多候选人简历上写着“熟悉分布式”,但一问具体实现就卡壳。 中国移动福 这个案例,正是检验你是否真懂底层逻辑的试金石,也是 面试必问 的高频考点。…

2026/9/22 18:52:58 阅读更多 →
天府通卡使用范围源码解析:3步搞定数据跑不通

天府通卡使用范围源码解析:3步搞定数据跑不通

天府通卡使用范围源码解析:3步搞定数据跑不通 刚拿到那段关于天府通卡使用范围的数据处理脚本,复制进本地环境直接报错?别急,这种“复制来的代码跑不通不知道怎么调”的情况,我在帮新人排查时见过太多次了。问题往往不在你的电脑,而在于你没看懂底层逻…

2026/9/22 18:52:58 阅读更多 →
3步搞定免费的短视频sdk:面试实战项目避坑指南

3步搞定免费的短视频sdk:面试实战项目避坑指南

3步搞定免费的短视频sdk:面试实战项目避坑指南 刚学完 Python 或 Java 语法,打开 IDE 却不知从何下手?这大概是无数转码者的噩梦。背了三天…

2026/9/22 18:51:58 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →