您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何在Java中使用Hutool工具類庫,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
我們引入這個工具類很簡單,直接在 Mavan 項目中引入 dependency 即可,如果是初學者,去 Maven Repository 下載 jar 包也可以使用。
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.5</version> </dependency>
通過 Hutool,可以減少代碼搜索成本,避免網(wǎng)絡上參差不齊的代碼出現(xiàn)導致的bug。
我們知道,Java 中關于日期的 API 使用一直很繁瑣,從 Date 到 Calendar,對開發(fā)者都不是那么友好,還容易出 BUG,那么 Hutool 首先就對日期下手了,提供了針對 JDK 中 Date 和 Calendar 對象的封裝。
比如要對當前的 Date 日期進行格式化,一般使用 SimpleDateFormat(yyyy-MM-dd HH:mm:ss) 這種方式,但 SimpleDateFormat 這個類是線程不安全的,而 Hutool 提供了一個 FastDateFormat 類,提供線程安全的針對 Date 對象的格式化和日期字符串解析支持。此對象在實際使用中并不需要感知,相關操作已經(jīng)封裝在 DateUtil 和 DateTime 的相關方法中。
還有其它的日期 API 如下:
DateUtil 針對日期時間操作提供一系列靜態(tài)方法
DateTim 提供類似于 Joda-Time 中日期時間對象的封裝,繼承自 Date 類,并提供更加豐富的對象方法。
DateBetween 計算兩個時間間隔的類,除了通過構造新對象使用外,相關操作也已封裝在 DateUtil 和 DateTime 的相關方法中。
TimeInterval 一個簡單的計時器類,常用于計算某段代碼的執(zhí)行時間,提供包括毫秒、秒、分、時、天、周等各種單位的花費時長計算,對象的靜態(tài)構造已封裝在 DateUtil 中。
DatePattern 提供常用的日期格式化模式,包括 String 類型和 FastDateFormat 兩種類型。
隨機工具應該是我們開發(fā)中用的較多的類庫,Hutool 也封裝了常用的 API。
RandomUtil.randomInt 獲得指定范圍內(nèi)的隨機數(shù)
RandomUtil.randomBytes 隨機 bytes
RandomUtil.randomEl 隨機獲得列表中的元素
RandomUtil.randomEleSet 隨機獲得列表中的一定量的不重復元素,返回 Set
RandomUtil.randomString 獲得一個隨機的字符串(只包含數(shù)字和字符)
RandomUtil.randomNumbers 獲得一個只包含數(shù)字的字符串
RandomUtil.randomUUID 隨機 UUID
RandomUtil.weightRandom 權重隨機生成器,傳入帶權重的對象,然后根據(jù)權重隨機獲取對象
針對 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] 之內(nèi)(包含邊界值)的一個浮點數(shù)字 );
加密一般分為三種:
對稱加密(symmetric),例如:AES、DES等
非對稱加密(asymmetric),例如:RSA、DSA等
摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等
Hutool 對上述加密都提供了對應的封裝方法。
布隆過濾器可以用于檢索一個元素是否在一個集合中。它的優(yōu)點是空間效率和查詢時間都遠遠超過一般的算法,缺點是有一定的誤識別率和刪除困難。一般用于解決 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ā)送的基礎上,仍然依賴于 javax.mail 包。
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>
郵件服務器的完整配置:
# 郵件服務器的SMTP地址,可選,默認為smtp.<發(fā)件人郵箱后綴> host = smtp.yeah.net # 郵件服務器的SMTP端口,可選,默認25 port = 25 # 發(fā)件人(必須正確,否則發(fā)送失敗) from = hutool@yeah.net # 用戶名,默認為發(fā)件人郵箱前綴 user = hutool # 密碼(注意,某些郵箱需要為SMTP服務單獨設置授權碼,詳情查看相關幫助) pass = q1w2e3
發(fā)送郵件:
發(fā)送普通文本郵件,最后一個參數(shù)可選是否添加多個附件:
//普通文本 MailUtil.send("hutool@foxmail.com", "測試", "郵件來自Hutool測試", false);
發(fā)送 HTML 格式的郵件并附帶附件,最后一個參數(shù)可選是否添加多個附件:
//帶HTML格式的郵件 MailUtil.send("hutool@foxmail.com", "測試", "<h2>郵件來自Hutool測試</h2>", true, FileUtil.file("d:/aaa.xml"));
群發(fā)郵件,可選 HTML 或普通文本,可選多個附件:
//群發(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 文本的指定標簽,或者只保留普通文本。
清除所有 HTM L標簽,但是保留標簽內(nèi)的內(nèi)容。
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);
清除指定HTML標簽和被標簽包圍的內(nèi)容
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);
關于如何在Java中使用Hutool工具類庫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。