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] 之內(包含邊界值)的一個浮點數字 );
加密解密工具
加密一般分為三種:
- 對稱加密(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 = [email protected] # 用戶名,默認為發件人郵箱前綴 user = hutool # 密碼(註意,某些郵箱需要為SMTP服務單獨設置授權碼,詳情查看相關幫助) pass = q1w2e3
發送郵件:
- 發送普通文本郵件,最後一個參數可選是否添加多個附件:
//普通文本 MailUtil.send("[email protected]", "測試", "郵件來自Hutool測試", false);
- 發送 HTML 格式的郵件並附帶附件,最後一個參數可選是否添加多個附件:
//帶HTML格式的郵件 MailUtil.send("[email protected]", "測試", "<h1>郵件來自Hutool測試</h1>", true, FileUtil.file("d:/aaa.xml"));
- 群發郵件,可選 HTML 或普通文本,可選多個附件:
//群發 ArrayList<String> tos = CollUtil.newArrayList( "[email protected]", "[email protected]", "[email protected]", "[email protected]"); 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的使用的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- None Found