利用Hutool-(Java工具类)实现验证码校验
第一篇是纯利用现有JDK提供的绘图类(ImageIO)类制作,这个过程比较复杂且需要了解ImageIO类。
这一篇文章是利用Hutool工具类来实现的,该工具类已经封装验证码所需的相关类等,使用起来较为简单和方便。
Hutool工具类介绍

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
- Web开发
- 与其它框架无耦合
- 高度可替换
Hutool官方网站:https://hutool.cn/
Hutool实现验证码生成
利用Hutool实现验证码校验,校验的Servlet与今天的第一篇是一样的,唯一就是验证码的生成是不一样的。利用Hutool生成验证码更快捷。
获取Hutool:
jar包下载:https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.8.8/
Maven:在项目的pom.xml的dependencies中加入以下内容:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.8</version>
</dependency>
Maven相关可参阅:idea创建Maven项目
生成验证码:
设置验证码长、宽、验证码字符数、干扰元素个数:
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(100,30,4,25);
在页面显示验证码及保存验证码内容到Session:
try{
lineCaptcha.write(response.getOutputStream());
String code = lineCaptcha.getCode();//获取验证码内容
request.getSession().setAttribute("piccode",code);
response.getOutputStream().close();
}catch (IOException e){
e.printStackTrace();
}
这个就实现了验证码的生成,相比于第一篇自己制作简洁了许多。
完整代码:
ImageGenerate.java
public class ImageGenerate extends HttpServlet {
public void doGet (HttpServletRequest request,HttpServletResponse response) {
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(100,30,4,25);
response.setContentType("image/jpeg");
response.setHeader("Pragma", "No-cache");
try{
lineCaptcha.write(response.getOutputStream());
String code = lineCaptcha.getCode();
request.getSession().setAttribute("piccode",code);
response.getOutputStream().close();
}catch (IOException e){
e.printStackTrace();
}
}
}
测试验证码生成
还是需要先配置web.xml文件:
<servlet>
<servlet-name>ImageGenerate</servlet-name>
<servlet-class>com.kailong.servlet.ImageGenerate</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageGenerate</servlet-name>
<url-pattern>/imageGenerate</url-pattern>
</servlet-mapping>


其他样式的验证码
上面展示的验证码是线段干扰样式的验证码,Hutool工具类还提供了其他样式的验证码:
- CircleCaptcha -圆圈干扰验证码

例:
//定义图形验证码的长、宽、验证码字符数、干扰元素个数
CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20);
try{
lineCaptcha.write(response.getOutputStream());
String code = lineCaptcha.getCode();//获取验证码内容
request.getSession().setAttribute("piccode",code);
response.getOutputStream().close();
}catch (IOException e){
e.printStackTrace();
}
- ShearCaptcha 扭曲干扰验证码

例:
//定义图形验证码的长、宽、验证码字符数、干扰线宽度
ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 100, 4, 4);
try{
lineCaptcha.write(response.getOutputStream());
String code = lineCaptcha.getCode();//获取验证码内容
request.getSession().setAttribute("piccode",code);
response.getOutputStream().close();
}catch (IOException e){
e.printStackTrace();
}
- Hutool还提供了自定义验证码
有时候标准的验证码不满足要求,比如我们希望使用纯字母的验证码、纯数字的验证码、加减乘除的验证码,此时我们就要自定义CodeGenerator
例:
// 自定义纯数字的验证码(随机4位数字,可重复)
RandomGenerator randomGenerator = new RandomGenerator("0123456789", 4);
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
lineCaptcha.setGenerator(randomGenerator);
// 重新生成code
lineCaptcha.createCode();
ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 45, 4, 4);
// 自定义验证码内容为四则运算方式
captcha.setGenerator(new MathGenerator());
// 重新生成code
captcha.createCode();
公众号本文地址:https://mp.weixin.qq.com/s/XHucabQ_WwUx2OMDGSTMkw
头条本文地址:https://www.toutiao.com/item/7154266494900191757/
欢迎关注公众号:愚生浅末
利用Hutool-(Java工具类)实现验证码校验的更多相关文章
- hutool JAVA 工具类
https://hutool.cn/docs/#/ 入门和安装 A set of tools that keep Java sweet. -- 主页:https://hutool.cn/ | http ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
- java工具类(二)之java正则表达式表单验证
java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...
- java工具类系列 (四.SerializationUtils)
java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Se ...
- 排名前 16 的 Java 工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- 排名前16的Java工具类
原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...
- 第一章 Java工具类目录
在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- 干货:排名前16的Java工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
随机推荐
- GreatSQL FAQ
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 0. GreatSQL简介 1. GreatSQL的特色有哪些 2. GreatSQL在哪里可以下载 二进制包.RP ...
- 基于C++17的泛型函数容器实现方法研究
- Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Jenkins初始化界面一直显示Please wait while Jenkins is getting ready to work ...
第一次访问jenkins时,会提示如下界面: 注:如果这个界面初始化的时间过长,则需要修改相关配置文件. 原因:因为访问官网太慢.我们只需要换一个源,不使用官网的源即可. 1.找到 jenkins工 ...
- Get请求使用请求体传递参数会报400异常的问题
问题描述: 前端使用Get请求并且使用请求体传递参数,后端使用@RequestBody注解封装参数,这时会出现400的异常信息. 解决方法: 1.Get请求不要使用请求体,使用请求体的话用POST请求 ...
- eReplication详解
eReplication简介 eReplication是一款基于华为存储复制.快照.双活.克隆以及FusionSphere主机复制等特性,保证上层应用数据一致性,针对华为典型容灾解决方案,提供可视化. ...
- 总在用户态调试 C# 程序,终还是搭了一个内核态环境
一:背景 一直在用 WinDbg 调试用户态程序,并没有用它调试过 内核态,毕竟不是做驱动开发,也没有在分析 dump 中需要接触用内核态的需求,但未知的事情总觉得很酷,加上最近在看 <深入解析 ...
- Javascript实现base64的加密解密方法
1 function Base64() { 2 // private property 3 _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl ...
- 服务端挂了,客户端的 TCP 连接还在吗?
作者:小林coding 计算机八股文网站:https://xiaolincoding.com 大家好,我是小林. 如果「服务端挂掉」指的是「服务端进程崩溃」,服务端的进程在发生崩溃的时候,内核会发送 ...
- KingbaseES R3 集群一键修改集群用户密码案例
案例说明: 在KingbaseES R3集群的最新版本中增加了kingbase_monitor.sh一键修改集群用户密码的功能,本案例是对此功能的测试. kingbaseES R3集群一键修改密码说明 ...