Java常用工具类库——Hutool的使用简介

前言

Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。
Hutool 中的工具方法来自于每个用户的精雕细琢,它涵盖了 Java 开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool 是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的 bug。

上述是 Hutool 的官方介绍,它的官方文档已经介绍的很详细了,因此下面我只简单介绍几个常用的 API 操作,更多的功能我们可以详细阅读文档。

官方文档地址:https://www.hutool.cn/docs/#/

HuTool 中的一些常用工具类

我们引入这个工具类很简单,直接在 Mavan 项目中引入 dependency 即可,如果是初学者,去 Maven Repository 下载 jar 包也可以使用。

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.5</version>
</dependency>

通过 Hutool,可以减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug。

日期相关 API

我们知道,Java 中关于日期的 API 使用一直很繁琐,从 Date 到 Calendar,对开发者都不是那么友好,还容易出 BUG,那么 Hutool 首先就对日期下手了,提供了针对 JDK 中 Date 和 Calendar 对象的封装。

比如要对当前的 Date 日期进行格式化,一般使用 SimpleDateFormat(yyyy-MM-dd HH:mm:ss) 这种方式,但 SimpleDateFormat 这个类是线程不安全的,而 Hutool 提供了一个 FastDateFormat 类,提供线程安全的针对 Date 对象的格式化和日期字符串解析支持。此对象在实际使用中并不需要感知,相关操作已经封装在 DateUtil 和 DateTime 的相关方法中。

还有其它的日期 API 如下:

  • DateUtil 针对日期时间操作提供一系列静态方法
  • DateTim 提供类似于 Joda-Time 中日期时间对象的封装,继承自 Date 类,并提供更加丰富的对象方法。
  • DateBetween 计算两个时间间隔的类,除了通过构造新对象使用外,相关操作也已封装在 DateUtil 和 DateTime 的相关方法中。
  • TimeInterval 一个简单的计时器类,常用于计算某段代码的执行时间,提供包括毫秒、秒、分、时、天、周等各种单位的花费时长计算,对象的静态构造已封装在 DateUtil 中。
  • DatePattern 提供常用的日期格式化模式,包括 String 类型和 FastDateFormat 两种类型。

随机工具

随机工具应该是我们开发中用的较多的类库,Hutool 也封装了常用的 API。

  • RandomUtil.randomInt 获得指定范围内的随机数
  • RandomUtil.randomBytes 随机 bytes
  • RandomUtil.randomEl 随机获得列表中的元素
  • RandomUtil.randomEleSet 随机获得列表中的一定量的不重复元素,返回 Set
  • RandomUtil.randomString 获得一个随机的字符串(只包含数字和字符)
  • RandomUtil.randomNumbers 获得一个只包含数字的字符串
  • RandomUtil.randomUUID 随机 UUID
  • RandomUtil.weightRandom 权重随机生成器,传入带权重的对象,然后根据权重随机获取对象

图片工具

针对 awt 中图片处理进行封装,这些封装包括:缩放、裁剪、转为黑白、加水印等操作。

彩色转换成黑白

//黑白转换
ImgUtil.gray(FileUtil.file("d:/logo.png"), FileUtil.file("d:/result.png"));

添加文字水印

ImgUtil.pressText(//
    FileUtil.file("e:/pic/face.jpg"), //
    FileUtil.file("e:/pic/test2_result.png"), //
    "版权所有", Color.WHITE, //文字
    new Font("黑体", Font.BOLD, 100), //字体
    0, //x坐标修正值。 默认在中间,偏移量相对于中间偏移
    0, //y坐标修正值。 默认在中间,偏移量相对于中间偏移
    0.8f//透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
);

加密解密工具

加密一般分为三种:

  1. 对称加密(symmetric),例如:AES、DES等
  2. 非对称加密(asymmetric),例如:RSA、DSA等
  3. 摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等

Hutool 对上述加密都提供了对应的封装方法。

布隆过滤器

布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。一般用于解决 NoSQL 的缓存穿透问题。

// 初始化
BitMapBloomFilter filter = new BitMapBloomFilter(10);
filter.add("123");
filter.add("abc");
filter.add("ddd");

// 查找
filter.contains("abc")

邮件工具

在 Java中 发送邮件主要品依靠 javax.mail 包,原生 API 使用比较繁琐,Hutool 在支持邮件发送的基础上,仍然依赖于 javax.mail 包。

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

邮件服务器的完整配置:

# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
host = smtp.yeah.net
# 邮件服务器的SMTP端口,可选,默认25
port = 25
# 发件人(必须正确,否则发送失败)
from = hutool@yeah.net
# 用户名,默认为发件人邮箱前缀
user = hutool
# 密码(注意,某些邮箱需要为SMTP服务单独设置授权码,详情查看相关帮助)
pass = q1w2e3

发送邮件:

  • 发送普通文本邮件,最后一个参数可选是否添加多个附件:
//普通文本
MailUtil.send("hutool@foxmail.com", "测试", "邮件来自Hutool测试", false);
  • 发送 HTML 格式的邮件并附带附件,最后一个参数可选是否添加多个附件:
//带HTML格式的邮件
MailUtil.send("hutool@foxmail.com", "测试", "<h1>邮件来自Hutool测试</h1>", true, FileUtil.file("d:/aaa.xml"));
  • 群发邮件,可选 HTML 或普通文本,可选多个附件:
//群发
ArrayList<String> tos = CollUtil.newArrayList(
    "person1@bbb.com",
    "person2@bbb.com",
    "person3@bbb.com",
    "person4@bbb.com");

MailUtil.send(tos, "测试", "邮件来自Hutool群发测试", false);

HTML 工具

比如清除富文本编辑器中的 HTML 文本的指定标签,或者只保留普通文本。

HtmlUtil.cleanHtmlTag

清除所有 HTM L标签,但是保留标签内的内容。

String str = "pre<div class=\"test_div\">\r\n\t\tdfdsfdsfdsf\r\n</div><div class=\"test_div\">BBBB</div>";

// 结果为:pre\r\n\t\tdfdsfdsfdsf\r\nBBBB
String result = HtmlUtil.cleanHtmlTag(str);

HtmlUtil.removeHtmlTag

清除指定HTML标签和被标签包围的内容

String str = "pre<img src=\"xxx/dfdsfds/test.jpg\">";

// 结果为:pre
String result = HtmlUtil.removeHtmlTag(str, "img");

过滤 HTML 文本,防止 XSS 攻击

这个作用就不必多说,防止用户在输入文本中写入 HTML 标签对后台造成攻击。

String html = "<alert></alert>";

// 结果为:""
String filter = HtmlUtil.filter(html);

JSON 工具

由于有开源并且一直在维护的 Fastjson 工具在先,所以这里就不再细说 Hutool 中的 JSON 工具,使用方法基本类似。

写在最后

上面只是简单的介绍了 Hutool 的典型常用工具,实际上 Hutool 基本覆盖了我们日常普通开发场景涉及的大部分工具类,有兴趣的可以自行查阅文档,介绍的很全,如果使用中遇到了 BUG,也欢迎及时向作者反馈哦🙋 。

以上就是Java常用工具类库——Hutool的使用简介的详细内容,更多关于Java 工具类库Hutool的使用的资料请关注我们其它相关文章!

(0)

相关推荐

  • 教你如何使用Java多线程编程LockSupport工具类

    LockSupport类 用于创建锁和其他同步类的基本线程阻塞原语,此类与使用它的每个线程关联一个许可.如果获得许可,将立即返回对park的调用,并在此过程中消耗掉它:否则may会被阻止.调用unpark可使许可证可用(如果尚不可用).(不过与信号量不同,许可证不会累积.最多只能有一个.) 方法park和unpark提供了有效的阻塞和解阻塞线程的方法,这些线程不会遇到导致已弃用的方法Thread.suspend和Thread.resume无法用于以下问题:由于许可,在调用park的一个线程与试图

  • java读取简单excel通用工具类

    本文实例为大家分享了java读取简单excel通用工具类的具体代码,供大家参考,具体内容如下 读取excel通用工具类 import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org

  • java处理日期的工具类DateUtil

    java中处理日期的工具类DateUtil,供大家参考,具体内容如下 package com.leo.demo.othertest; import org.slf4j.LoggerFactory; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;

  • Java编写超时工具类实例讲解

    我们在开发过程中,在进行时间操作时,如果在规定的时间内完成处理的话,有可能会回到正确的结果.否则,就会被视为超时任务.此时,我们不再等待(不再执行)的时间操作,直接向调用者传达这个任务需要时间,被取消了. 1.说明 java已经为我们提供了解决办法.jdk1.5带来的并发库Future类可以满足这一需求.Future类中重要的方法有get()和cancel().get()获取数据对象,如果数据没有加载,则在获取数据之前堵塞,cancel()取消数据加载.另一个get(timeout)操作表明,如

  • 浅谈java如何生成分享海报工具类

    # 前言 例如:生成分享海报,比如注册扫二维码登录.分享商品海报等!本博文是基于springboot工程得! 一.使用步骤 1.导入pom依赖和上传图片到工程 代码如下(示例):在自己得通用工具类模块中导入坐标!(这需要根据自己得工程来) <!--谷歌图片压缩--> <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> &l

  • Java基础之颜色工具类(超详细注释)

    颜色工具类(超详细注释) 设置属性值自动格式化rgb值和十六进制颜色值. import java.util.HashMap; import java.util.Map; public class Color{ private final String[] hex_letters = {"0", "1", "2", "3", "4", "5", "6", "7

  • java中封装JDBC工具类的实例分析

    对于能够重复使用的代码,我们最好的方法是对它们进行封装,然后在下次使用的使用就可以直接调用了.本篇所要提到的是JDBC工具类,相信大家在学习java时都接触过.那么对于封装它的方法,本篇先对工具类进行简单的说明,列出有关的封装步骤,然后带来相关的实例. 1.说明 在java开发过程中,代码中时常用到一些Scanner.Random一样的类,他们是键盘录入,生成随机数的类,像一个工具一样,在java中被称为工具类. 2.步骤 封装JDBC工具类 加入获取数据库连接对象的方法 加入释放连接的方法 3

  • Java实现RSA加密工具类

    公钥加密算法,也就是 非对称加密算法,这种算法加密和解密的密码不一样,一个是公钥,另一个是私钥: 公钥和私钥成对出现 公开的密钥叫公钥,只有自己知道的叫私钥 用公钥加密的数据只有对应的私钥可以解密 用私钥加密的数据只有对应的公钥可以解密 如果可以用公钥解密,则必然是对应的私钥加的密 如果可以用私钥解密,则必然是对应的公钥加的密 公钥和私钥是相对的,两者本身并没有规定哪一个必须是公钥或私钥. 代码如下 package com.cxy.template.controller.keyTools; im

  • java身份证合法性校验工具类实例代码

    1.身份证规则 计算方法(来源百度) 将前面的身份证号码17位数分别乘以不同的系数.从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2. 将这17位数字和系数相乘的结果相加. 用加出来和除以11,看余数是多少? 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字.其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2.(即余数0对应1,余数1对应0,余数2对应X-) 通过上面得知如果余数是3,就会在身份

  • Java身份证号码校验工具类详解

    本文实例为大家分享了Java身份证号码校验工具类的具体代码,供大家参考,具体内容如下 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.regex.Pattern; public class IdcardVa

  • Java JDBC自定义封装工具类的步骤和完整代码

    封装JDBC工具类的作用可以优化代码,提高开发效率 步骤 ① 创建配置文件(config.properties),用于存放注册驱动和连接数据库时所需要的参数值 ② 自定义一个类(JDBCUtils.java) ③ 实现构造私有方法 private JDBCUtils(){} ④ 声明所需要的配置变量 private static String driverClass; private static String url; private static String username; priva

  • Java利用POI读写Excel文件工具类

    本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; imp

  • java中金额元转万元工具类的实例

    我就废话不多说了,大家还是直接看代码吧~ public static void main(String[] args) { // 具体的金额(单位元) String value = "88000067898"; BigDecimal bigDecimal = new BigDecimal(value); // 转换为万元(除以10000) BigDecimal decimal = bigDecimal.divide(new BigDecimal("10000"));

随机推荐