Java使用Hutool工具包生成二维码、验证码、随机数

简介: Java使用Hutool工具包生成二维码、验证码、随机数

前言

Hutool是一个小而全的Java工具类库


它可以帮助我们操作excel,生成随机数,二维码,验证码,发送电子邮件,转化bean和json等操作


我个人也是非常喜欢这个工具包


当然它的功能远不止这些,下面就简单分享下一些简单实用的操作


前提准备,需要准备一个项目和本地路径


项目是为了方便进行测试


本地路径是为了存放生成的验证码和图片

效果展示

以下为一些效果截图

image.png

image.png

image.png

image.png


image.png


引入Hutool工具包


首先需要引入hutool依赖,以及使用比较广泛的二维码工具类zxing

<!--hutool万能工具包-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.21</version>
        </dependency>
        <!--二维码工具包-->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.4.1</version>
        </dependency>

然后创建一个类,就开始编写代码测试啦

生成二维码


package com.example.demo;
import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
public class QrCodeUtils {
    /**
     * 生成普通类型的二维码
     */
    public static void generateGeneralQrCode() {
        // 三个参数分别是 扫码内容 宽高
        QrCodeUtil.generate("http://www.baidu.com/",
                500, 500,
                // 生成路径 切记换成自己的
                FileUtil.file("D:\\Tools\\Java\\HutoolTest\\QRCODE1.jpg"));
    }
    public static void main(String[] args) {
        generateGeneralQrCode();
    }
}

image.gif

image.gif自定义背景图片二维码


上面的二维码有点单调是吗,没关系,我们可以自定义加入背景图片


比如我现在有这么一直图,那么我就想把它作为背景图生成二维码


package com.example.demo;
import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
public class QrCodeUtils {
    /**
     * 生成自定义图片的二维码
     */
    public static void generateGeneralQrCodeWithBgImg() {
        QrConfig config = new QrConfig(500, 500);
        config.setImg("D:\\Tools\\Images\\image\\大海4.jpg");
        config.setErrorCorrection(ErrorCorrectionLevel.Q);
        QrCodeUtil.generate("https://www.baidu.com/", config, FileUtil.file("D:\\Tools\\Java\\HutoolTest\\QRCODE2.jpg"));
    }
    public static void main(String[] args) {
        generateGeneralQrCodeWithBgImg();
    }
}

验证码

使用hutool生成验证码十分简单,我们可以生成各种各样的验证码图片

自定义验证码生成规则

个人觉得这种最实用,可以自定义生成的内容区间,个数,字体样式,背景颜色等等

建议大家多去试试玩玩 挺有意思的

image.png


image.gif编辑

package com.example;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.generator.RandomGenerator;
/**
 * @description: 测试生成验证码工具类
 * @author: 魏一鹤
 * @createDate: 2022-08-17 22:56
 **/
public class VerificationCodeUtils {
    /**
     * 生成自定义规则的验证码
     */
    public static void generateCustomVerificationCode() {
        /**参数分别是宽、高、验证码个数,横线干扰个数**/
        LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(300, 100, 6, 10);
        /**只会在0-9中产生验证码的内容,内容个数为6**/
        RandomGenerator randomGenerator = new RandomGenerator("0123456789", 6);
        lineCaptcha.setGenerator(randomGenerator);
        String lineCaptchaCode = lineCaptcha.getCode();
        System.out.println(lineCaptchaCode);
        lineCaptcha.write("D:\\Tools\\Java\\HutoolTest\\lineCaptcha2.png");
    }
    public static void main(String[] args) {
        generateCustomVerificationCode();
    }
}

image.gif

image.gif

随机数

一般随机数每个公司都会自己的生成规则,包括个数,生成方式

大家只需要知道使用hutool也可以简单快速生成随机数即可

部分生成方式如下

import cn.hutool.core.util.RandomUtil;
        RandomUtil.randomString(10)    //小写字母+数字
        RandomUtil.randomStringUpper(10)   //大写字母+数字
        RandomUtil.randomNumbers(10)   //数字
        RandomUtil.randomStringWithoutStr(10,"0123456789") //不含有0123456789
        RandomUtil.randomString("abc",10)  //只含有abc
        RandomUtil.randomChar()    // 生成小写字母+数字中一个字符
        RandomUtil.randomNumber()  // 生成0123456789中一个字符
        RandomUtil.randomChar("-!?")   // 生成-!?中一个字符

image.png

总结

Hutool里面的小工具还是挺多的,而且好玩实用,大家可以多试试,当然它的作用和功能远不如此

后续会接着更新一些其他功能

image.gif

目录
相关文章
|
9月前
|
消息中间件 算法 安全
JUC并发—1.Java集合包底层源码剖析
本文主要对JDK中的集合包源码进行了剖析。
|
5月前
|
存储 Java
Java LocalDateTime与hutool DateUtil实现秒转换为时分秒格式化展示。
注意:以上代码示例仅适合于处理小于24小时内(86400s) 总积 因 LocalDateTime 和 Local Time 不支持超过24小时表达而 huo tool示例虽然理论上支持但未考虑超过24小时情况下可能出现负值等异常情况处理细节需用户自行添加相关逻辑以确保正确性.
401 7
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
安全 Java 调度
解锁Java并发编程高阶技能:深入剖析无锁CAS机制、揭秘魔法类Unsafe、精通原子包Atomic,打造高效并发应用
【8月更文挑战第4天】在Java并发编程中,无锁编程以高性能和低延迟应对高并发挑战。核心在于无锁CAS(Compare-And-Swap)机制,它基于硬件支持,确保原子性更新;Unsafe类提供底层内存操作,实现CAS;原子包java.util.concurrent.atomic封装了CAS操作,简化并发编程。通过`AtomicInteger`示例,展现了线程安全的自增操作,突显了这些技术在构建高效并发程序中的关键作用。
230 1
|
10月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
440 17
|
11月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
2403 5
|
Java Android开发
Eclipse 创建 Java 包
Eclipse 创建 Java 包
228 1
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
1044 0
Java/Spring项目的包开头为什么是com?
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
182 1