验证码功能位于cn.hutool.captcha包中,核心接口为ICaptcha,此接口定义了以下方法:

    • getCode 获取验证码的文字内容
    • verify 验证验证码是否正确,建议忽略大小写
    • write 将验证码写出到目标流中

    其中write方法只有一个OutputStreamICaptcha实现类可以根据这个方法封装写出到文件等方法。

    生成效果大致如下:

    贴栗子:

    贴栗子:

    1. //定义图形验证码的长、宽、验证码字符数、干扰元素个数
    2. CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20);
    3. //CircleCaptcha captcha = new CircleCaptcha(200, 100, 4, 20);
    4. //图形验证码写出,可以写出到文件,也可以写出到流
    5. captcha.write("d:/circle.png");

    图形验证码(Hutool-captcha) - 图1

    1. ICaptcha captcha = ...;
    2. captcha.write(response.getOutputStream());
    3. //Servlet的OutputStream记得自行关闭哦!

    有时候标准的验证码不满足要求,比如我们希望使用纯字母的验证码、纯数字的验证码、加减乘除的验证码,此时我们就要自定义CodeGenerator

    1. ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 45, 4, 4);
    2. // 自定义验证码内容为四则运算方式
    3. captcha.setGenerator(new MathGenerator());
    4. // 重新生成code