扩展工具 - 图片验证码生成工具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>KaptchaServletservlet-name>
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServletservlet-class>
    servlet>
    <servlet-mapping>
        <servlet-name>KaptchaServletservlet-name>
        <url-pattern>/kaptchaurl-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创建验证码。

    扩展工具 - 图片验证码生成工具kaptcha_第1张图片

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

    在这里插入图片描述

    扩展工具 - 图片验证码生成工具kaptcha_第2张图片

2.Kaptcha相关配置

Constant 描述 默认值
kaptcha.border 图片边框,合法值:yes , no yes
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.key session key KAPTCHA_SESSION_KEY
kaptcha.session.date session date KAPTCHA_SESSION_DATE

代码实现

<servlet>
    <servlet-name>KaptchaServletservlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServletservlet-class>
    
    <init-param>
        <param-name>kaptcha.borderparam-name>
        <param-value>yesparam-value>
    init-param>
    
    <init-param>
        <param-name>kaptcha.border.colorparam-name>
        <param-value>redparam-value>
    init-param>
    
    <init-param>
        <param-name>kaptcha.textproducer.char.lengthparam-name>
        <param-value>4param-value>
    init-param>
    <init-param>
        <param-name>kaptcha.image.widthparam-name>
        <param-value>160param-value>
    init-param>
    <init-param>
        <param-name>kaptcha.image.heightparam-name>
        <param-value>50param-value>
    init-param>
servlet>

你可能感兴趣的:(Java底层源码及扩展内容,servlet,前端,java)