如何在Java中使用Hutool工具类库
这篇文章将为大家详细讲解有关如何在Java中使用Hutool工具类库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
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] 之内(包含边界值)的一个浮点数字);
加密解密工具
加密一般分为三种:
对称加密(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端口,可选,默认25port = 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 工具
比如清除富文本编辑器中的 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\nBBBBString result = HtmlUtil.cleanHtmlTag(str);
HtmlUtil.removeHtmlTag
清除指定HTML标签和被标签包围的内容
String str = "pre<img class="lazy" data-src=\"xxx/dfdsfds/test.jpg\">";// 结果为:preString result = HtmlUtil.removeHtmlTag(str, "img");
过滤 HTML 文本,防止 XSS 攻击
这个作用就不必多说,防止用户在输入文本中写入 HTML 标签对后台造成攻击。
String html = "<alert></alert>";// 结果为:""String filter = HtmlUtil.filter(html);
关于如何在Java中使用Hutool工具类库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341