天天看點

Hutool-賊好用的Java工具類庫

簡介

Hutool是Hu + tool的自造詞,前者緻敬我的“前任公司”,後者為工具之意,諧音“糊塗”,寓意追求“萬事都作糊塗觀,無所謂失,無所謂得”的境界。

Hutool是一個Java工具包,也隻是一個工具包,它幫助我們簡化每一行代碼,減少每一個方法,讓Java語言也可以“甜甜的”。Hutool最初是我項目中“util”包的一個整理,後來慢慢積累并加入更多非業務相關功能,并廣泛學習其它開源項目精髓,經過自己整理修改,最終形成豐富的開源工具集。(抄自作者簡介)

功能

一個Java基礎工具類,對檔案、流、加密解密、轉碼、正則、線程、XML等JDK方法進行封裝,組成各種Util工具類,同時提供以下元件:

hutool-aop JDK動态代理封裝,提供非IOC下的切面支援

hutool-bloomFilter 布隆過濾,提供一些Hash算法的布隆過濾

hutool-cache 緩存

hutool-core 核心,包括Bean操作、日期、各種Util等

hutool-cron 定時任務子產品,提供類Crontab表達式的定時任務

hutool-crypto 加密解密子產品

hutool-db JDBC封裝後的資料操作,基于ActiveRecord思想

hutool-dfa 基于DFA模型的多關鍵字查找

hutool-extra 擴充子產品,對第三方封裝(模闆引擎、郵件等)

hutool-http 基于HttpUrlConnection的Http用戶端封裝

hutool-log 自動識别日志實作的日志門面

hutool-script 腳本執行封裝,例如Javascript

hutool-setting 功能更強大的Setting配置檔案和Properties封裝

hutool-system 系統參數調用封裝(JVM資訊等)

hutool-json JSON實作

hutool-captcha 圖檔驗證碼實作

簡單測試

這兩天使用Hutool把Halo裡面的一些代碼給替換掉了,不得不說,用起來十分順心,下面簡單介紹一下我用到的一些Hutool的工具類。

SecureUtil(加密解密工具)

主要是在登入的時候還有修改密碼的時候用到的,因為資料庫裡面的密碼是md5加密處理的,是以登入的時候需要先加密之後再到資料庫進行查詢,使用Hutool的話,隻需要調用SecureUtil中的md5方法就可以了。

user = userService.userLoginByName(loginName,SecureUtil.md5(loginPwd));

1

HtmlUtil(HTML工具類)

這個工具類就比較厲害了,不過我在Halo當中用得最多的還是HtmlUtil.encode,可以将一些字元轉化為安全字元,防止xss注入和SQL注入,比如下面的評論送出。

comment.setCommentAuthor(HtmlUtil.encode(comment.getCommentAuthor()));

1

這就是防止有小壞蛋故意寫一些可執行的js代碼,然後送出評論,在背景面闆就會執行這一段代碼,比較危險,使用encode方法就可以将<script>标簽給轉化成<script>,這樣轉化之後,js代碼就不會執行了。

另外,HtmlUtil還提供了以下方法,有興趣的可以去試一下。

HtmlUtil.restoreEscaped 還原被轉義的HTML特殊字元

HtmlUtil.encode 轉義文本中的HTML字元為安全的字元

HtmlUtil.cleanHtmlTag 清除所有HTML标簽

HtmlUtil.removeHtmlTag 清除指定HTML标簽和被标簽包圍的内容

HtmlUtil.unwrapHtmlTag 清除指定HTML标簽,不包括内容

HtmlUtil.removeHtmlAttr 去除HTML标簽中的屬性

HtmlUtil.removeAllHtmlAttr 去除指定标簽的所有屬性

HtmlUtil.filter 過濾HTML文本,防止XSS攻擊

CronUtil(定時任務)

這個工具就更厲害了,完全不需要類似quartz這樣的架構來做定時任務,而且CronUtil也不需要任何其他依賴,隻需要在resources下建一個配置檔案,然後在程式啟動的時候将定時任務開啟就行了,如Halo的定時備份功能(每天淩晨1點備份一次)。

cron.setting:

cc.ryanc.halo.web.controller.admin.BackupController.backupResources = 0 0 1 * * ?

cc.ryanc.halo.web.controller.admin.BackupController.backupDatabase = 0 0 1 * * ?

cc.ryanc.halo.web.controller.admin.BackupController.backupPosts = 0 0 1 * * ?

@Override

public void onApplicationEvent(ContextRefreshedEvent event){

    this.loadActiveTheme();

    this.loadOptions();

    this.loadFiles();

    this.loadThemes();

    //啟動定時任務

    CronUtil.start();

    log.info("定時任務啟動成功!");

}

具體使用方法請看文檔http://hutool.mydoc.io/?t=255673

好了,就介紹這三個工具類,有興趣的可以去試試其他的工具,挺全的,這應該是我用過最好用的一個工具類庫了,值得一試。

ps:好久沒更了,水一篇。

官網位址:http://www.hutool.cn/

--------------------- 

作者:RYAN0UP 

來源:CSDN 

原文:https://blog.csdn.net/RYAN0UP/article/details/80772693 

版權聲明:本文為部落客原創文章,轉載請附上博文連結!