spring mvc 使用kaptcha配置生成验证码实例
发布时间 - 2026-01-11 00:43:16 点击率:次使用Kaptcha 生成验证码十分简单并且参数可以进行自定义,以下简单记录下使用步骤。

1.在pom.xml中添加maven依赖:
<dependency> <groupId>com.google.code.kaptcha</groupId> <artifactId>kaptcha</artifactId> <version>2.3</version> <classifier>jdk15</classifier> </dependency>
2.web.xml中配置kaptcha属性:
<bean id="verifyCodeProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
<property name="config">
<bean class="com.google.code.kaptcha.util.Config">
<constructor-arg>
<props>
<prop key="kaptcha.border">yes</prop>
<prop key="kaptcha.border.color">105,179,90</prop>
<prop key="kaptcha.border.thickness">1</prop>
<prop key="kaptcha.noise.color">blue</prop>
<prop key="kaptcha.image.width">150</prop>
<prop key="kaptcha.image.height">50</prop>
<prop key="kaptcha.session.key">verifyCode</prop>
<!-- <prop key="kaptcha.textproducer.char.string">0123456789abcdefghijklmnopqrst!@#$%^*</prop> -->
<prop key="kaptcha.textproducer.char.length">4</prop>
<prop key="kaptcha.textproducer.char.space">4</prop>
<prop key="kaptcha.textproducer.font.size">30</prop>
<prop key="kaptcha.textproducer.font.color">blue</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
其中bean节点的id值 verifyCodeProducer 为在类中引用@Resource生成实例时的名称;属性配置中 kaptcha.session.key 的值为在session中存取名称。
在servlet节点中配置
3.controller类中的相关方法:
@Controller
public class CommonController {
@Autowired
private Producer verifyCodeProducer;
@RequestMapping(path = "/getVerifyCodeImage", method = RequestMethod.GET)
public void getVerifyCodeImage(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
ResponseUtils.noCache(response);
response.setContentType("image/jpeg");
String capText = verifyCodeProducer.createText();
session.setAttribute(Constants.SESSION_KEY_VERIFY_CODE, capText);
BufferedImage bi = verifyCodeProducer.createImage(capText);
ServletOutputStream out = null;
try {
out = response.getOutputStream();
ImageIO.write(bi, "jpg", out);
out.flush();
} catch (Exception ex) {
LOGGER.error("Failed to produce the verify code image: ", ex);
throw new ServerInternalException("Cannot produce the verify code image.");
} finally {
IOUtils.closeQuietly(out);
}
}
}
Constants.SESSION_KEY_VERIFY_CODE为属性配置中 kaptcha.session.key 的值。
4.jsp:
<div class="form-group has-feedback">
<span class="glyphicon glyphicon-barcode form-control-feedback"></span>
<input id="verifyCode" name="verifyCode" type="text" maxlength="4" class="form-control" placeholder="<spring:message code='login.label.code' />" />
<div style="height: 1px"></div>
<img src="${pageContext.request.contextPath}/getVerifyCodeImage" id="verifyCodeImage" style="margin-bottom: -3px" />
<a href="#" rel="external nofollow" onclick="changeVerifyCode()"><spring:message code='login.code.tip' /></a>
</div>
function changeVerifyCode() {
$('#verifyCodeImage').hide().attr('src', '${pageContext.request.contextPath}/getVerifyCodeImage?' + Math.floor(Math.random()*100) ).fadeIn();
event.cancelBubble=true;
}
5.kaptcha属性说明:
- kaptcha.border.color 边框颜色 默认为Color.BLACK
- kaptcha.border.thickness 边框粗细度 默认为1
- kaptcha.producer.impl 验证码生成器 默认为DefaultKaptcha
- kaptcha.textproducer.impl 验证码文本生成器 默认为DefaultTextCreator
- kaptcha.textproducer.char.string 验证码文本字符内容范围 默认为abcde2345678gfynmnpwx
- kaptcha.textproducer.char.length 验证码文本字符长度 默认为5
- kaptcha.textproducer.font.names 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
- kaptcha.textproducer.font.size 验证码文本字符大小 默认为40
- kaptcha.textproducer.font.color 验证码文本字符颜色 默认为Color.BLACK
- kaptcha.textproducer.char.space 验证码文本字符间距 默认为2
- kaptcha.noise.impl 验证码噪点生成对象 默认为DefaultNoise
- kaptcha.noise.color 验证码噪点颜色 默认为Color.BLACK
- kaptcha.obscurificator.impl 验证码样式引擎 默认为WaterRipple
- kaptcha.word.impl 验证码文本字符渲染 默认为DefaultWordRenderer
- kaptcha.background.impl 验证码背景生成器 默认为DefaultBackground
- kaptcha.background.clear.from 验证码背景颜色渐进 默认为Color.LIGHT_GRAY
- kaptcha.background.clear.to 验证码背景颜色渐进 默认为Color.WHITE
- kaptcha.image.width 验证码图片宽度 默认为200
- kaptcha.image.height 验证码图片高度 默认为50
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# kaptcha
# spring
# mvc
# springmvc
# 验证码生成
# springmvc配置kaptcha
# springMVC实现图形验证码(kaptcha)代码实例
# Google Kaptcha 框架实现登录验证码功能(SSM 和 SpringBoot)
# SpringBoot集成kaptcha验证码
# springboot整合kaptcha验证码的示例代码
# SpringMvc使用GoogleKaptcha生成验证码
# SpringBoot 集成Kaptcha实现验证码功能实例详解
# 登陆验证码kaptcha结合spring boot的用法详解
# Spring boot如何集成kaptcha并生成验证码
# 验证码
# 默认为
# 类中
# 噪点
# 自定义
# 值为
# 大家多多
# servlet
# Resource
# Controller
# public
# CommonController
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Python3.6正式版新特性预览
php json中文编码为null的解决办法
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
免费视频制作网站,更新又快又好的免费电影网站?
Python并发异常传播_错误处理解析【教程】
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel如何与Inertia.js和Vue/React构建现代单页应用
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
微信小程序 五星评分(包括半颗星评分)实例代码
html如何与html链接_实现多个HTML页面互相链接【互相】
怎样使用JSON进行数据交换_它有什么限制
,交易猫的商品怎么发布到网站上去?
如何快速登录WAP自助建站平台?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel如何使用Blade模板引擎?(完整语法和示例)
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
Python数据仓库与ETL构建实战_Airflow调度流程详解
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
Linux系统命令中screen命令详解
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
怎么用AI帮你设计一套个性化的手机App图标?
Laravel怎么实现验证码(Captcha)功能
如何快速重置建站主机并恢复默认配置?
怎么用AI帮你为初创公司进行市场定位分析?
如何做网站制作流程,*游戏网站怎么搭建?
Laravel中的withCount方法怎么高效统计关联模型数量
西安专业网站制作公司有哪些,陕西省建行官方网站?
jQuery 常见小例汇总
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
高端建站如何打造兼具美学与转化的品牌官网?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
千库网官网入口推荐 千库网设计创意平台入口
移动端脚本框架Hammer.js
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
如何快速选择适合个人网站的云服务器配置?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
python中快速进行多个字符替换的方法小结
详解Android中Activity的四大启动模式实验简述
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何基于云服务器快速搭建个人网站?
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】

