一行代码实现验证码--Happy Captcha

使用 Happy Captcha,一行代码生成验证码。

这里做一个整理和记录:
引入jar包:

<dependency>
  <groupId>com.ramostear</groupId>
  <artifactId>Happy-Captcha</artifactId>
  <version>1.0.1</version>
</dependency>

开始使用,只需一行代码就可以生成验证码:

@Controller
public class HappyCaptchaController{
    @GetMapping("/captcha")
    public void happyCaptcha(HttpServletRequest reqeust,HttpServletResponse response){
        HappyCaptcha.require(request,response).build().finish();
    }
}

这里还可以使用链式编程,对验证码的一些属性进行设置:

public void happyCaptcha(HttpServletRequest reqeust, HttpServletResponse response){
            HappyCaptcha.require(reqeust,response)
                    .style(CaptchaStyle.IMG)            //设置展现样式为图片
                    .length(4)                            //设置字符长度为4
                    .width(220)                            //设置动画宽度为220
                    .height(80)                            //设置动画高度为80
                    .build().finish();                  //生成并输出验证码;
        }

实现效果如下:
在这里插入图片描述
如果CaptchaStyle设置为CaptchaStyle.ANIM,生成的验证码还会有动画效果。


打开finish方法的源码。我们可以看到生成的验证码是放在session中了:

 captcha.setLength(this.length);
                captcha.setFont(this.font);
                this.setHeader(this.response);
                this.request.getSession().setAttribute("happy-captcha", captcha.getCaptchaCode());
                captcha.render(this.response.getOutputStream());
                return true;```

所以,使用过的验证码要从session中清除, Happy Captcha提供了这样的方法来实现:

 public void removeCaptcha(HttpServletRequest request){
            HappyCaptcha.remove(request);
        }

最后就是对于验证码的校验:

public String verify(String code,HttpServletRequest request){
            //Verification Captcha
            boolean flag = HappyCaptcha.verification(request,code,true);
            if(flag){
                //Other operations...
            }
            return code;
        }

打开verification方法的源码,我们可以看到:

if (code != null && !code.trim().equals("")) {
            String captcha = (String)request.getSession().getAttribute("happy-captcha");
            return ignoreCase ? code.equalsIgnoreCase(captcha) : code.equals(captcha);
        } else {
            return false;
        }

就是从session中取出刚才存入的验证码,然后与输入的验证码code进行对比。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Happy Captcha简易验证码是一款易于使用的Java验证码软件包,旨在花最短的时间,最少的代码量,实现Web站点的验证码功能。 Happy Captcha简易验证码提供了图片和动画两种展现形式,验证码内容包括中文(收录3500个常用汉字),阿拉伯数字(09),中文数字(零至九),中文大写数字(零至玖),数字与字母混合(09-az-AZ),数字与小写字母混合(09-az),数字与大写字母混合(09-AZ),纯小写字母,纯大写字母,大小写字母混合以及运算表达式(阿拉伯数字运算表达式和中文运算表达式)等12种类型。 Happy Captcha简易验证码完全遵循Apache 2.0开源许可协议,你可以自由使用该软件,如您在使用Happy Captcha时发现软件的任何缺陷,欢迎随时与作者联系。 Happy Captcha简易验证码安装: 如果你的项目使用的是Maven进行依赖管理,你只需向pom.xml文件添加下面的配置即可:     com.ramostear   Happy-Captcha   1.0.1   Gradle用户则可以通过引入如下的配置获取Happy Captcha: implementation 'com.ramostear:Happy-Captcha:1.0.1' Happy Captcha简易验证码使用: HappyCaptcha在设计时力求过程的简洁,在默认情况下,你只需要书写一行代码即可生成漂亮的验证码图片。下面是HappyCaptcha的使用示例: @Controller public class HappyCaptchaController{     @GetMapping("/captcha")     public void happyCaptcha(HttpServletRequest request,HttpServletResponse response){         HappyCaptcha.require(request,response).build().finish();     } } 对于HappyCaptcha而言,只有request和response是必须提供的参数,其余参数都可以使用缺省值。 在默认情况下,HappyCaptcha生成的验证码以图片形式展现,内容为09-az-A~Z的字符随机组合,字符长度为5,图片宽度为160,高度为50,字体为微软雅黑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值