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属性说明:

  1. kaptcha.border.color   边框颜色   默认为Color.BLACK 
  2. kaptcha.border.thickness  边框粗细度  默认为1 
  3. kaptcha.producer.impl   验证码生成器  默认为DefaultKaptcha 
  4. kaptcha.textproducer.impl   验证码文本生成器  默认为DefaultTextCreator 
  5. kaptcha.textproducer.char.string   验证码文本字符内容范围  默认为abcde2345678gfynmnpwx 
  6. kaptcha.textproducer.char.length   验证码文本字符长度  默认为5 
  7. kaptcha.textproducer.font.names    验证码文本字体样式  默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) 
  8. kaptcha.textproducer.font.size   验证码文本字符大小  默认为40 
  9. kaptcha.textproducer.font.color  验证码文本字符颜色  默认为Color.BLACK 
  10. kaptcha.textproducer.char.space  验证码文本字符间距  默认为2 
  11. kaptcha.noise.impl    验证码噪点生成对象  默认为DefaultNoise 
  12. kaptcha.noise.color   验证码噪点颜色   默认为Color.BLACK 
  13. kaptcha.obscurificator.impl   验证码样式引擎  默认为WaterRipple 
  14. kaptcha.word.impl   验证码文本字符渲染   默认为DefaultWordRenderer 
  15. kaptcha.background.impl   验证码背景生成器   默认为DefaultBackground 
  16. kaptcha.background.clear.from   验证码背景颜色渐进   默认为Color.LIGHT_GRAY 
  17. kaptcha.background.clear.to   验证码背景颜色渐进   默认为Color.WHITE 
  18. kaptcha.image.width   验证码图片宽度  默认为200 
  19. 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岁的学生写小说,应该去什么样的网站?  如何基于云服务器快速搭建个人网站?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】