当前位置: 首页 > news >正文

扩展工具 - 图片验证码生成工具kaptcha

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 1.kaptcha介绍
    • 1.1 kaptcha概述
    • 1.2 入门案例
  • 2.Kaptcha相关配置


1.kaptcha介绍

1.1 kaptcha概述

  • kaptcha 是一个很有用的验证码生成工具。有了它,你能够生成各种样式的验证码,由于它是可配置的。
  • kaptcha工作的原理是调用com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片。
  • 同一时候将生成的验证码字符串放到 HttpSession中。
  • 使用kaptcha可以方便的配置: 验证码的字体 验证码字体的大小 验证码字体的字体颜色 验证码内容的范围(数字,字母,中文汉字!) 验证码图片的大小,边框,边框粗细,边框颜色 验证码的干扰线(可以自己继承com.google.code.kaptcha.NoiseProducer写一个自定义的干扰线) 验证码的样式(鱼眼样式、3D、普通模糊……当然也可以继承com.google.code.kaptcha.GimpyEngine自定义样式)

1.2 入门案例

开发步骤 :

  1. 导入kaptcha.jar包
  2. 在web.xml中配置KaptchaServlet访问路径
  3. 自定义一个类DemoServlet01,在session中查找到验证码。
  4. 调用http://localhost:8080/kaptcha创建验证码。
  5. 访问DemoServlet01查看验证码是否正确。

代码实现 :

  • 导入kaptcha.jar包

  • 在web.xml中配置KaptchaServlet访问路径

    <servlet>
        <servlet-name>KaptchaServlet</servlet-name>
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>KaptchaServlet</servlet-name>
        <url-pattern>/kaptcha</url-pattern>
    </servlet-mapping>
    
  • 自定义一个类DemoServlet01,在session中查找到验证码。

    @WebServlet("/demo01")
    public class DemoServlet01 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // 获取前端输入的验证码
            String code = req.getParameter("code");
    
            // 获取生成的验证码
            String zcode = (String)req.getSession().getAttribute("KAPTCHA_SESSION_KEY");
    
            // 校验验证码是否正确
            if (zcode.equals(code)) {
                System.out.println("正确");
            }else {
                System.out.println("错误");
            }
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    
  • 调用http://localhost:8080/kaptcha创建验证码。

    在这里插入图片描述

  • 访问DemoServlet01查看验证码是否正确。

    在这里插入图片描述

    在这里插入图片描述

2.Kaptcha相关配置

Constant描述默认值
kaptcha.border图片边框,合法值:yes , noyes
kaptcha.border.color边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.black
kaptcha.image.width图片宽200
kaptcha.image.height图片高50
kaptcha.producer.impl图片实现类com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.impl文本实现类com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.string文本集合,验证码值从此集合中获取abcde2345678gfynmnpwx
kaptcha.textproducer.char.length验证码长度5
kaptcha.textproducer.font.names字体Arial, Courier
kaptcha.textproducer.font.size字体大小40px.
kaptcha.textproducer.font.color字体颜色,合法值: r,g,b 或者 white,black,blue.black
kaptcha.textproducer.char.space文字间隔2
kaptcha.noise.impl干扰实现类com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.color干扰 颜色,合法值: r,g,b 或者 white,black,blue.black
kaptcha.obscurificator.impl图片样式:
水纹 com.google.code.kaptcha.impl.WaterRipple 鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy 阴影 com.google.code.kaptcha.impl.ShadowGimpy
com.google.code.kaptcha.impl.WaterRipple
kaptcha.background.impl背景实现类com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.from背景颜色渐变,开始颜色light grey
kaptcha.background.clear.to背景颜色渐变, 结束颜色white
kaptcha.word.impl文字渲染器com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.keysession keyKAPTCHA_SESSION_KEY
kaptcha.session.datesession dateKAPTCHA_SESSION_DATE

代码实现

<servlet>
    <servlet-name>KaptchaServlet</servlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
    <!--设置是否有边框-->
    <init-param>
        <param-name>kaptcha.border</param-name>
        <param-value>yes</param-value>
    </init-param>
    <!--设置边框颜色-->
    <init-param>
        <param-name>kaptcha.border.color</param-name>
        <param-value>red</param-value>
    </init-param>
    <!--设置验证码长度-->
    <init-param>
        <param-name>kaptcha.textproducer.char.length</param-name>
        <param-value>4</param-value>
    </init-param>
    <init-param>
        <param-name>kaptcha.image.width</param-name>
        <param-value>160</param-value>
    </init-param>
    <init-param>
        <param-name>kaptcha.image.height</param-name>
        <param-value>50</param-value>
    </init-param>
</servlet>

相关文章:

  • 淤地坝安全自动监测预警系统解决方案
  • Revit中的公制植物RPC族制作步骤
  • E. Counting Rectangles(二维前缀和)
  • 流量操作与后门
  • RADIUS 本地服务器还能用吗?
  • springboot+mybatisplus+postgis实现几何点和线串增删改查分页
  • linux内核移植流程
  • canvas 正在慢慢吃掉你的内存...
  • 【无标题】11111
  • go pprof 的使用
  • 类和对象 中
  • LeetCode变位词组
  • locust压测实例
  • 8.6 轻量化网络设计概述
  • 【C#】萌狼学习C#那年写的笔记汇总
  • 【Amaple教程】5. 插件
  • Cumulo 的 ClojureScript 模块已经成型
  • C语言笔记(第一章:C语言编程)
  • Docker 笔记(2):Dockerfile
  • ES6系统学习----从Apollo Client看解构赋值
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java基本数据类型之Number
  • Linux链接文件
  • React+TypeScript入门
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Swoft 源码剖析 - 代码自动更新机制
  • 给github项目添加CI badge
  • 免费小说阅读小程序
  • 如何进阶一名有竞争力的程序员?
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 携程小程序初体验
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • #Java第九次作业--输入输出流和文件操作
  • (11)MATLAB PCA+SVM 人脸识别
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)基于IDEA的JAVA基础1
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)为C# Windows服务添加安装程序
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .form文件_SSM框架文件上传篇
  • .Net Memory Profiler的使用举例
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET中统一的存储过程调用方法(收藏)
  • /boot 内存空间不够
  • @Transactional 详解
  • []C/C++读取串口接收到的数据程序
  • [1525]字符统计2 (哈希)SDUT
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]