您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java的類庫Hutool及API如何使用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Java的類庫Hutool及API如何使用文章都會(huì)有所收獲,下面我們一起來看看吧。
Hutool 是一個(gè)小而全的 Java 工具類庫,通過靜態(tài)方法封裝,降低相關(guān) API 的學(xué)習(xí)成本,提高工作效率,使 Java 擁有函數(shù)式語言般的優(yōu)雅,讓 Java 語言也可以“甜甜的”。
Hutool 中的工具方法來自于每個(gè)用戶的精雕細(xì)琢,它涵蓋了 Java 開發(fā)底層代碼中的方方面面,它既是大型項(xiàng)目開發(fā)中解決小問題的利器,也是小型項(xiàng)目中的效率擔(dān)當(dāng);
Hutool 是項(xiàng)目中“util”包友好的替代,它節(jié)省了開發(fā)人員對(duì)項(xiàng)目中公用類和公用工具方法的封裝時(shí)間,使開發(fā)專注于業(yè)務(wù),同時(shí)可以最大限度的避免封裝不完善帶來的 bug。
我們引入這個(gè)工具類很簡單,直接在 Mavan 項(xiàng)目中引入 dependency 即可,如果是初學(xué)者,去 Maven Repository 下載 jar 包也可以使用。
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.5</version>
</dependency>
通過 Hutool,可以減少代碼搜索成本,避免網(wǎng)絡(luò)上參差不齊的代碼出現(xiàn)導(dǎo)致的bug。
我們知道,Java 中關(guān)于日期的 API 使用一直很繁瑣,從 Date 到 Calendar,對(duì)開發(fā)者都不是那么友好,還容易出 BUG,那么 Hutool 首先就對(duì)日期下手了,提供了針對(duì) JDK 中 Date 和 Calendar 對(duì)象的封裝。
比如要對(duì)當(dāng)前的 Date 日期進(jìn)行格式化,一般使用 SimpleDateFormat(yyyy-MM-dd HH:mm:ss) 這種方式,但 SimpleDateFormat 這個(gè)類是線程不安全的,而 Hutool 提供了一個(gè) FastDateFormat 類,提供線程安全的針對(duì) Date 對(duì)象的格式化和日期字符串解析支持。此對(duì)象在實(shí)際使用中并不需要感知,相關(guān)操作已經(jīng)封裝在 DateUtil 和 DateTime 的相關(guān)方法中。
還有其它的日期 API 如下:
DateUtil 針對(duì)日期時(shí)間操作提供一系列靜態(tài)方法
DateTim 提供類似于 Joda-Time 中日期時(shí)間對(duì)象的封裝,繼承自 Date 類,并提供更加豐富的對(duì)象方法。
DateBetween 計(jì)算兩個(gè)時(shí)間間隔的類,除了通過構(gòu)造新對(duì)象使用外,相關(guān)操作也已封裝在 DateUtil 和 DateTime 的相關(guān)方法中。
TimeInterval 一個(gè)簡單的計(jì)時(shí)器類,常用于計(jì)算某段代碼的執(zhí)行時(shí)間,提供包括毫秒、秒、分、時(shí)、天、周等各種單位的花費(fèi)時(shí)長計(jì)算,對(duì)象的靜態(tài)構(gòu)造已封裝在 DateUtil 中。
DatePattern 提供常用的日期格式化模式,包括 String 類型和 FastDateFormat 兩種類型。
隨機(jī)工具應(yīng)該是我們開發(fā)中用的較多的類庫,Hutool 也封裝了常用的 API。
RandomUtil.randomInt 獲得指定范圍內(nèi)的隨機(jī)數(shù)
RandomUtil.randomBytes 隨機(jī) bytes
RandomUtil.randomEl 隨機(jī)獲得列表中的元素
RandomUtil.randomEleSet 隨機(jī)獲得列表中的一定量的不重復(fù)元素,返回 Set
RandomUtil.randomString 獲得一個(gè)隨機(jī)的字符串(只包含數(shù)字和字符)
RandomUtil.randomNumbers 獲得一個(gè)只包含數(shù)字的字符串
RandomUtil.randomUUID 隨機(jī) UUID
RandomUtil.weightRandom 權(quán)重隨機(jī)生成器,傳入帶權(quán)重的對(duì)象,然后根據(jù)權(quán)重隨機(jī)獲取對(duì)象
針對(duì) awt 中圖片處理進(jìn)行封裝,這些封裝包括:縮放、裁剪、轉(zhuǎn)為黑白、加水印等操作。
//黑白轉(zhuǎn)換
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"), //
"版權(quán)所有", Color.WHITE, //文字
new Font("黑體", Font.BOLD, 100), //字體
0, //x坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移
0, //y坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移
0.8f//透明度:alpha 必須是范圍 [0.0, 1.0] 之內(nèi)(包含邊界值)的一個(gè)浮點(diǎn)數(shù)字
);
加密一般分為三種:
對(duì)稱加密(symmetric),例如:AES、DES等
非對(duì)稱加密(asymmetric),例如:RSA、DSA等
摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等
Hutool 對(duì)上述加密都提供了對(duì)應(yīng)的封裝方法。
布隆過濾器可以用于檢索一個(gè)元素是否在一個(gè)集合中。它的優(yōu)點(diǎn)是空間效率和查詢時(shí)間都遠(yuǎn)遠(yuǎn)超過一般的算法,缺點(diǎn)是有一定的誤識(shí)別率和刪除困難。一般用于解決 NoSQL 的緩存穿透問題。
// 初始化
BitMapBloomFilter filter = new BitMapBloomFilter(10);
filter.add("123");
filter.add("abc");
filter.add("ddd");
// 查找
filter.contains("abc")
在 Java中 發(fā)送郵件主要品依靠 javax.mail 包,原生 API 使用比較繁瑣,Hutool 在支持郵件發(fā)送的基礎(chǔ)上,仍然依賴于 javax.mail 包。
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
郵件服務(wù)器的完整配置:
# 郵件服務(wù)器的SMTP地址,可選,默認(rèn)為smtp.<發(fā)件人郵箱后綴>
host = smtp.yeah.net
# 郵件服務(wù)器的SMTP端口,可選,默認(rèn)25
port = 25
# 發(fā)件人(必須正確,否則發(fā)送失?。?
from = hutool@yeah.net
# 用戶名,默認(rèn)為發(fā)件人郵箱前綴
user = hutool
# 密碼(注意,某些郵箱需要為SMTP服務(wù)單獨(dú)設(shè)置授權(quán)碼,詳情查看相關(guān)幫助)
pass = q1w2e3
發(fā)送郵件:
發(fā)送普通文本郵件,最后一個(gè)參數(shù)可選是否添加多個(gè)附件:
//普通文本
MailUtil.send("hutool@foxmail.com", "測試", "郵件來自Hutool測試", false);
發(fā)送 HTML 格式的郵件并附帶附件,最后一個(gè)參數(shù)可選是否添加多個(gè)附件:
//帶HTML格式的郵件
MailUtil.send("hutool@foxmail.com", "測試", "<h2>郵件來自Hutool測試</h2>", true, FileUtil.file("d:/aaa.xml"));
群發(fā)郵件,可選 HTML 或普通文本,可選多個(gè)附件:
//群發(fā)
ArrayList<String> tos = CollUtil.newArrayList(
"person1@bbb.com",
"person2@bbb.com",
"person3@bbb.com",
"person4@bbb.com");
MailUtil.send(tos, "測試", "郵件來自Hutool群發(fā)測試", false);
比如清除富文本編輯器中的 HTML 文本的指定標(biāo)簽,或者只保留普通文本。
清除所有 HTM L標(biāo)簽,但是保留標(biāo)簽內(nèi)的內(nèi)容。
String str = "pre<div class="test_div">
dfdsfdsfdsf
</div><div class="test_div">BBBB</div>";
// 結(jié)果為:pre
dfdsfdsfdsf
BBBB
String result = HtmlUtil.cleanHtmlTag(str);
清除指定HTML標(biāo)簽和被標(biāo)簽包圍的內(nèi)容
String str = "pre<img src="xxx/dfdsfds/test.jpg">";
// 結(jié)果為:pre
String result = HtmlUtil.removeHtmlTag(str, "img");
這個(gè)作用就不必多說,防止用戶在輸入文本中寫入 HTML 標(biāo)簽對(duì)后臺(tái)造成攻擊。
String html = "<alert></alert>";
// 結(jié)果為:""
String filter = HtmlUtil.filter(html);
由于有開源并且一直在維護(hù)的 Fastjson 工具在先,所以這里就不再細(xì)說 Hutool 中的 JSON 工具,使用方法基本類似。
關(guān)于“Java的類庫Hutool及API如何使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Java的類庫Hutool及API如何使用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。