Java常用工具類庫——Hutool的使用簡介
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ā)人員對項(xiàng)目中公用類和公用工具方法的封裝時(shí)間,使開發(fā)專注于業(yè)務(wù),同時(shí)可以最大限度的避免封裝不完善帶來的 bug。
上述是 Hutool 的官方介紹,它的官方文檔已經(jīng)介紹的很詳細(xì)了,因此下面我只簡單介紹幾個(gè)常用的 API 操作,更多的功能我們可以詳細(xì)閱讀文檔。
官方文檔地址:https://www.hutool.cn/docs/#/
HuTool 中的一些常用工具類我們引入這個(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。
日期相關(guān) API我們知道,Java 中關(guān)于日期的 API 使用一直很繁瑣,從 Date 到 Calendar,對開發(fā)者都不是那么友好,還容易出 BUG,那么 Hutool 首先就對日期下手了,提供了針對 JDK 中 Date 和 Calendar 對象的封裝。
比如要對當(dāng)前的 Date 日期進(jìn)行格式化,一般使用 SimpleDateFormat(yyyy-MM-dd HH:mm:ss) 這種方式,但 SimpleDateFormat 這個(gè)類是線程不安全的,而 Hutool 提供了一個(gè) FastDateFormat 類,提供線程安全的針對 Date 對象的格式化和日期字符串解析支持。此對象在實(shí)際使用中并不需要感知,相關(guān)操作已經(jīng)封裝在 DateUtil 和 DateTime 的相關(guān)方法中。
還有其它的日期 API 如下:
DateUtil 針對日期時(shí)間操作提供一系列靜態(tài)方法 DateTim 提供類似于 Joda-Time 中日期時(shí)間對象的封裝,繼承自 Date 類,并提供更加豐富的對象方法。 DateBetween 計(jì)算兩個(gè)時(shí)間間隔的類,除了通過構(gòu)造新對象使用外,相關(guān)操作也已封裝在 DateUtil 和 DateTime 的相關(guān)方法中。 TimeInterval 一個(gè)簡單的計(jì)時(shí)器類,常用于計(jì)算某段代碼的執(zhí)行時(shí)間,提供包括毫秒、秒、分、時(shí)、天、周等各種單位的花費(fèi)時(shí)長計(jì)算,對象的靜態(tài)構(gòu)造已封裝在 DateUtil 中。 DatePattern 提供常用的日期格式化模式,包括 String 類型和 FastDateFormat 兩種類型。 隨機(jī)工具隨機(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)重的對象,然后根據(jù)權(quán)重隨機(jī)獲取對象 圖片工具針對 awt 中圖片處理進(jìn)行封裝,這些封裝包括:縮放、裁剪、轉(zhuǎ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)在中間,偏移量相對于中間偏移 0, //y坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對于中間偏移 0.8f//透明度:alpha 必須是范圍 [0.0, 1.0] 之內(nèi)(包含邊界值)的一個(gè)浮點(diǎn)數(shù)字);加密解密工具
加密一般分為三種:
對稱加密(symmetric),例如:AES、DES等 非對稱加密(asymmetric),例如:RSA、DSA等 摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等Hutool 對上述加密都提供了對應(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)25port = 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', '測試', '<h1>郵件來自Hutool測試</h1>', 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 工具
比如清除富文本編輯器中的 HTML 文本的指定標(biāo)簽,或者只保留普通文本。
HtmlUtil.cleanHtmlTag清除所有 HTM L標(biāo)簽,但是保留標(biāo)簽內(nèi)的內(nèi)容。
String str = 'pre<div class='test_div'>rnttdfdsfdsfdsfrn</div><div class='test_div'>BBBB</div>';// 結(jié)果為:prernttdfdsfdsfdsfrnBBBBString result = HtmlUtil.cleanHtmlTag(str);HtmlUtil.removeHtmlTag
清除指定HTML標(biāo)簽和被標(biāo)簽包圍的內(nèi)容
String str = 'pre<img src='http://www.4tl426be.cn/bcjs/xxx/dfdsfds/test.jpg'>';// 結(jié)果為:preString result = HtmlUtil.removeHtmlTag(str, 'img');過濾 HTML 文本,防止 XSS 攻擊
這個(gè)作用就不必多說,防止用戶在輸入文本中寫入 HTML 標(biāo)簽對后臺(tái)造成攻擊。
String html = '<alert></alert>';// 結(jié)果為:''String filter = HtmlUtil.filter(html);JSON 工具
由于有開源并且一直在維護(hù)的 Fastjson 工具在先,所以這里就不再細(xì)說 Hutool 中的 JSON 工具,使用方法基本類似。
寫在最后上面只是簡單的介紹了 Hutool 的典型常用工具,實(shí)際上 Hutool 基本覆蓋了我們?nèi)粘F胀ㄩ_發(fā)場景涉及的大部分工具類,有興趣的可以自行查閱文檔,介紹的很全,如果使用中遇到了 BUG,也歡迎及時(shí)向作者反饋哦🙋 。
以上就是Java常用工具類庫——Hutool的使用簡介的詳細(xì)內(nèi)容,更多關(guān)于Java 工具類庫Hutool的使用的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 解決Android Studio Design界面不顯示layout控件的問題2. python mysql 字段與關(guān)鍵字沖突的解決方式3. bootstrap select2 動(dòng)態(tài)從后臺(tái)Ajax動(dòng)態(tài)獲取數(shù)據(jù)的代碼4. Python加載數(shù)據(jù)的5種不同方式(收藏)5. python讀取中文路徑時(shí)出錯(cuò)(2種解決方案)6. Python用K-means聚類算法進(jìn)行客戶分群的實(shí)現(xiàn)7. python編寫五子棋游戲8. Java源碼解析之接口List9. Java xml數(shù)據(jù)格式返回實(shí)現(xiàn)操作10. layui Ajax請求給下拉框賦值的實(shí)例
