这篇文章主要介绍了Java的类库Hutool及API如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java的类库Hutool及API如何使用文章都会有所收获,下面我们一起来看看吧。
Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。
Hutool 中的工具方法来自于每个用户的精雕细琢,它涵盖了 Java 开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool 是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的 bug。
我们引入这个工具类很简单,直接在 Mavan 项目中引入 dependency 即可,如果是初学者,去 Maven Repository 下载 jar 包也可以使用。
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.5</version>
</dependency>
通过 Hutool,可以减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug。
我们知道,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] 之内(包含边界值)的一个浮点数字
);
加密一般分为三种:
对称加密(symmetric),例如:AES、DES等
非对称加密(asymmetric),例如:RSA、DSA等
摘要加密(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", "测试", "<h2>邮件来自Hutool测试</h2>", 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 文本的指定标签,或者只保留普通文本。
清除所有 HTM L标签,但是保留标签内的内容。
String str = "pre<div class="test_div">
dfdsfdsfdsf
</div><div class="test_div">BBBB</div>";
// 结果为:pre
dfdsfdsfdsf
BBBB
String result = HtmlUtil.cleanHtmlTag(str);
清除指定HTML标签和被标签包围的内容
String str = "pre<img src="xxx/dfdsfds/test.jpg">";
// 结果为:pre
String result = HtmlUtil.removeHtmlTag(str, "img");
这个作用就不必多说,防止用户在输入文本中写入 HTML 标签对后台造成攻击。
String html = "<alert></alert>";
// 结果为:""
String filter = HtmlUtil.filter(html);
由于有开源并且一直在维护的 Fastjson 工具在先,所以这里就不再细说 Hutool 中的 JSON 工具,使用方法基本类似。
关于“Java的类库Hutool及API如何使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Java的类库Hutool及API如何使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。