一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java常用工具類庫——Hutool的使用簡介

Java常用工具類庫——Hutool的使用簡介

2021-09-04 11:29碼農翻身 Java教程

這篇文章主要介紹了Java常用工具類庫——Hutool的使用簡介,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下

前言

Hutool 是一個小而全的 Java 工具類庫,通過靜態方法封裝,降低相關 API 的學習成本,提高工作效率,使 Java 擁有函數式語言般的優雅,讓 Java 語言也可以“甜甜的”。
Hutool 中的工具方法來自于每個用戶的精雕細琢,它涵蓋了 Java 開發底層代碼中的方方面面,它既是大型項目開發中解決小問題的利器,也是小型項目中的效率擔當;
Hutool 是項目中“util”包友好的替代,它節省了開發人員對項目中公用類和公用工具方法的封裝時間,使開發專注于業務,同時可以最大限度的避免封裝不完善帶來的 bug。

上述是 Hutool 的官方介紹,它的官方文檔已經介紹的很詳細了,因此下面我只簡單介紹幾個常用的 API 操作,更多的功能我們可以詳細閱讀文檔。

官方文檔地址:https://www.hutool.cn/docs/#/

HuTool 中的一些常用工具類

我們引入這個工具類很簡單,直接在 Mavan 項目中引入 dependency 即可,如果是初學者,去 Maven Repository 下載 jar 包也可以使用。

?
1
2
3
4
5
<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 中圖片處理進行封裝,這些封裝包括:縮放、裁剪、轉為黑白、加水印等操作。

彩色轉換成黑白

?
1
2
//黑白轉換
ImgUtil.gray(FileUtil.file("d:/logo.png"), FileUtil.file("d:/result.png"));

添加文字水印

?
1
2
3
4
5
6
7
8
9
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] 之內(包含邊界值)的一個浮點數字
);

加密解密工具

加密一般分為三種:

  1. 對稱加密(symmetric),例如:AES、DES等
  2. 非對稱加密(asymmetric),例如:RSA、DSA等
  3. 摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等

Hutool 對上述加密都提供了對應的封裝方法。

布隆過濾器

布隆過濾器可以用于檢索一個元素是否在一個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的算法,缺點是有一定的誤識別率和刪除困難。一般用于解決 NoSQL 的緩存穿透問題。

?
1
2
3
4
5
6
7
8
// 初始化
BitMapBloomFilter filter = new BitMapBloomFilter(10);
filter.add("123");
filter.add("abc");
filter.add("ddd");
 
// 查找
filter.contains("abc")

郵件工具

在 Java中 發送郵件主要品依靠 javax.mail 包,原生 API 使用比較繁瑣,Hutool 在支持郵件發送的基礎上,仍然依賴于 javax.mail 包。

?
1
2
3
4
5
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

郵件服務器的完整配置:

?
1
2
3
4
5
6
7
8
9
10
# 郵件服務器的SMTP地址,可選,默認為smtp.<發件人郵箱后綴>
host = smtp.yeah.net
# 郵件服務器的SMTP端口,可選,默認25
port = 25
# 發件人(必須正確,否則發送失?。?/code>
# 用戶名,默認為發件人郵箱前綴
user = hutool
# 密碼(注意,某些郵箱需要為SMTP服務單獨設置授權碼,詳情查看相關幫助)
pass = q1w2e3

發送郵件:

  • 發送普通文本郵件,最后一個參數可選是否添加多個附件:
?
1
2
//普通文本
MailUtil.send("[email protected]", "測試", "郵件來自Hutool測試", false);
  • 發送 HTML 格式的郵件并附帶附件,最后一個參數可選是否添加多個附件:
?
1
2
//帶HTML格式的郵件
MailUtil.send("[email protected]", "測試", "<h1>郵件來自Hutool測試</h1>", true, FileUtil.file("d:/aaa.xml"));
  • 群發郵件,可選 HTML 或普通文本,可選多個附件:
?
1
2
3
4
5
6
7
8
//群發
ArrayList<String> tos = CollUtil.newArrayList(
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]");
 
MailUtil.send(tos, "測試", "郵件來自Hutool群發測試", false);

HTML 工具

比如清除富文本編輯器中的 HTML 文本的指定標簽,或者只保留普通文本。

HtmlUtil.cleanHtmlTag

清除所有 HTM L標簽,但是保留標簽內的內容。

?
1
2
3
4
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標簽和被標簽包圍的內容

?
1
2
3
4
String str = "pre<img src=\"xxx/dfdsfds/test.jpg\">";
 
// 結果為:pre
String result = HtmlUtil.removeHtmlTag(str, "img");

過濾 HTML 文本,防止 XSS 攻擊

這個作用就不必多說,防止用戶在輸入文本中寫入 HTML 標簽對后臺造成攻擊。

?
1
2
3
4
String html = "<alert></alert>";
 
// 結果為:""
String filter = HtmlUtil.filter(html);

JSON 工具

由于有開源并且一直在維護的 Fastjson 工具在先,所以這里就不再細說 Hutool 中的 JSON 工具,使用方法基本類似。

寫在最后

上面只是簡單的介紹了 Hutool 的典型常用工具,實際上 Hutool 基本覆蓋了我們日常普通開發場景涉及的大部分工具類,有興趣的可以自行查閱文檔,介紹的很全,如果使用中遇到了 BUG,也歡迎及時向作者反饋哦 。

以上就是Java常用工具類庫——Hutool的使用簡介的詳細內容,更多關于Java 工具類庫Hutool的使用的資料請關注服務器之家其它相關文章!

原文鏈接:https://bestzuo.cn/posts/hutool.html

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
主站蜘蛛池模板: 韩国最新三级网站在线播放 | 色悠久久久| 亚洲欧美日韩久久一区 | 女子监狱第二季未删减在线看 | 免费一级欧美片片线观看 | 欧美日韩高清不卡一区二区三区 | 肉文高h调教 | 美女私人影院 | 日本精品久久久久久久久免费 | 99自拍视频在线观看 | 人禽l交视频在线播放 视频 | 欧美一级裸片又黄又裸 | 女仆色永久免费网站 | 欧美多gayxxxx | 久久全国免费久久青青小草 | 欧美特级特黄a大片免费 | 星空无限传媒xk8129 | 麻豆视频免费在线播放 | 高级黄色片| 韩国久播影院理论片不卡影院 | 亚洲男人精品 | 国产成人精品本亚洲 | 国自产精品手机在线视频 | 成人福利免费视频 | 国产rpg迷雾之风冷狐破解 | japanese秘书丝袜 | 国产视频久久久 | 欧美影院天天5g天天爽 | 91夜夜操| 国产haodiaose最新 | 草莓视频在线观看免费 | 99re热这里只有精品视频 | 热久久亚洲 | 欧美日韩一本 | 精品国产91高清在线观看 | 非洲黑人bbwbbwbbw | 99久久er这里只有精品17 | 午夜精品久视频在线观看 | 天天做天天爱天天爽综合区 | 日本老妇成熟 | 国内精品久久久久影院男同志 |