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

目录
相关文章
|
10天前
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
1月前
|
安全 Java 调度
解锁Java并发编程高阶技能:深入剖析无锁CAS机制、揭秘魔法类Unsafe、精通原子包Atomic,打造高效并发应用
【8月更文挑战第4天】在Java并发编程中,无锁编程以高性能和低延迟应对高并发挑战。核心在于无锁CAS(Compare-And-Swap)机制,它基于硬件支持,确保原子性更新;Unsafe类提供底层内存操作,实现CAS;原子包java.util.concurrent.atomic封装了CAS操作,简化并发编程。通过`AtomicInteger`示例,展现了线程安全的自增操作,突显了这些技术在构建高效并发程序中的关键作用。
59 1
|
1月前
|
Java Maven 数据库
Java 包(package)
Java 包(package)
24 1
|
1月前
|
Java
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
|
1月前
|
Java
Java 基础语法-面试题(54-63道)(数组+类+包)
Java 基础语法-面试题(54-63道)(数组+类+包)
36 16
|
1月前
|
Java
Java系类 之 生成随机数(random()和Random类)
这篇文章介绍了Java中生成随机数的两种方法:使用`Math.random()`方法和`Random`类的实例方法,并提供了示例代码展示如何使用这些方法生成特定范围或特定条件下的随机数。
|
2月前
|
Java 测试技术 数据安全/隐私保护
day25:Java零基础 - 包机制
【7月更文挑战第25天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
26 7
|
2月前
|
安全 Oracle Java
(四)深入理解Java并发编程之无锁CAS机制、魔法类Unsafe、原子包Atomic
其实在我们上一篇文章阐述Java并发编程中synchronized关键字原理的时候我们曾多次谈到过CAS这个概念,那么它究竟是什么?
|
1月前
|
JavaScript Java API
Java日志通关(二) - Slf4j+Logback 整合及排包
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第二篇。
|
2月前
|
关系型数据库 Java 分布式数据库
PolarDB产品使用问题之部署到服务器上的Java应用(以jar包形式运行)无法连接,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。