超级好用!一款基于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/10/9 10:01:18 阅读更多 →
GB28181协议与EasyCVR在智慧农场监控中的应用

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

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

2026/10/2 3:29:01 阅读更多 →
ansible 实例 -- 用于 Linux 文件系统的操作 -- 如何使用 Ansible 任务在远程系统上重命名文件或目录?

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

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

2026/10/2 11:42:47 阅读更多 →

最新新闻

2026年618电商节logo设计做不完?用TaoToken统一Key接入即梦AI与Seedream,快速搞定商用品牌视觉

2026年618电商节logo设计做不完?用TaoToken统一Key接入即梦AI与Seedream,快速搞定商用品牌视觉

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:22:46 阅读更多 →
OpenClaw启动日志详细分析:从插件加载到dingtalk-stream的Node.js排错指南

OpenClaw启动日志详细分析:从插件加载到dingtalk-stream的Node.js排错指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:22:46 阅读更多 →
ncnn 上部署 yolov5:从模型转换到端侧推理的完整链路拆解

ncnn 上部署 yolov5:从模型转换到端侧推理的完整链路拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:22:45 阅读更多 →
2026年AI论文工具实测排行:TaoToken统一Key接入哪款真正适合写论文?

2026年AI论文工具实测排行:TaoToken统一Key接入哪款真正适合写论文?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:22:45 阅读更多 →
用 TaoToken 统一 Key 跑通英文故事生成:FIVE MONSTROUS CREATURES 大纲拆解

用 TaoToken 统一 Key 跑通英文故事生成:FIVE MONSTROUS CREATURES 大纲拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:22:45 阅读更多 →
Codex-aware插件:AI编程时代的人机协作思考滤网

Codex-aware插件:AI编程时代的人机协作思考滤网

1. 项目概述:这不是“防降智”,而是对信息过载时代认知负荷的主动管理“codex 防降智插件,实测有用”——这个标题一出来,我就在好几个技术群和知识管理社区里看到有人转发。它不像那些带营销话术的标题,比如“一键拯救…

2026/10/9 10:21:44 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →