Hutool,一個(gè)賊好用的 Java 工具類庫(kù),用過(guò)都說(shuō)好~
簡(jiǎn)介 功能 簡(jiǎn)單測(cè)試 SecureUtil(加密解密工具) HtmlUtil(HTML工具類) CronUtil(定時(shí)任務(wù))
簡(jiǎn)介
Hutool 諧音 “糊涂”,寓意追求 “萬(wàn)事都作糊涂觀,無(wú)所謂失,無(wú)所謂得” 的境界。
Hutool 是一個(gè) Java 工具包,也只是一個(gè)工具包,它幫助我們簡(jiǎn)化每一行代碼,減少每一個(gè)方法,讓 Java 語(yǔ)言也可以 “甜甜的”。Hutool 最初是我項(xiàng)目中 “util” 包的一個(gè)整理,后來(lái)慢慢積累并加入更多非業(yè)務(wù)相關(guān)功能,并廣泛學(xué)習(xí)其它開(kāi)源項(xiàng)目精髓,經(jīng)過(guò)自己整理修改,最終形成豐富的開(kāi)源工具集。(抄自作者簡(jiǎn)介)
功能
一個(gè) Java 基礎(chǔ)工具類,對(duì)文件、流、加密解密、轉(zhuǎn)碼、正則、線程、XML 等 JDK 方法進(jìn)行封裝,組成各種 Util 工具類,同時(shí)提供以下組件:
hutool-aop JDK 動(dòng)態(tài)代理封裝,提供非 IOC 下的切面支持 hutool-bloomFilter 布隆過(guò)濾,提供一些 Hash 算法的布隆過(guò)濾 hutool-cache 緩存 hutool-core 核心,包括 Bean 操作、日期、各種 Util 等 hutool-cron 定時(shí)任務(wù)模塊,提供類 Crontab 表達(dá)式的定時(shí)任務(wù) hutool-crypto 加密解密模塊 hutool-db JDBC 封裝后的數(shù)據(jù)操作,基于 ActiveRecord 思想 hutool-dfa 基于 DFA 模型的多關(guān)鍵字查找 hutool-extra 擴(kuò)展模塊,對(duì)第三方封裝(模板引擎、郵件等) hutool-http 基于 HttpUrlConnection 的 Http 客戶端封裝 hutool-log 自動(dòng)識(shí)別日志實(shí)現(xiàn)的日志門(mén)面 hutool-script 腳本執(zhí)行封裝,例如 Javascript hutool-setting 功能更強(qiáng)大的 Setting 配置文件和 Properties 封裝 hutool-system 系統(tǒng)參數(shù)調(diào)用封裝(JVM 信息等) hutool-json JSON 實(shí)現(xiàn) hutool-captcha 圖片驗(yàn)證碼實(shí)現(xiàn)
簡(jiǎn)單測(cè)試
這兩天使用 Hutool 把 Halo 里面的一些代碼給替換掉了,不得不說(shuō),用起來(lái)十分順心,下面簡(jiǎn)單介紹一下我用到的一些 Hutool 的工具類。
SecureUtil(加密解密工具)
主要是在登錄的時(shí)候還有修改密碼的時(shí)候用到的,因?yàn)閿?shù)據(jù)庫(kù)里面的密碼是 md5 加密處理的,所以登錄的時(shí)候需要先加密之后再到數(shù)據(jù)庫(kù)進(jìn)行查詢,使用 Hutool 的話,只需要調(diào)用 SecureUtil 中的 md5 方法就可以了。
user?=?userService.userLoginByName(loginName,SecureUtil.md5(loginPwd));
HtmlUtil(HTML 工具類)
這個(gè)工具類就比較厲害了,不過(guò)我在 Halo 當(dāng)中用得最多的還是 HtmlUtil.encode,可以將一些字符轉(zhuǎn)化為安全字符,防止 xss 注入和 SQL 注入,比如下面的評(píng)論提交。
comment.setCommentAuthor(HtmlUtil.encode(comment.getCommentAuthor()));
這就是防止有小壞蛋故意寫(xiě)一些可執(zhí)行的 js 代碼,然后提交評(píng)論,在后臺(tái)面板就會(huì)執(zhí)行這一段代碼,比較危險(xiǎn),使用 encode 方法就可以將 標(biāo)簽給轉(zhuǎn)化成,這樣轉(zhuǎn)化之后,js 代碼就不會(huì)執(zhí)行了。
另外,HtmlUtil 還提供了以下方法,有興趣的可以去試一下。
HtmlUtil.restoreEscaped 還原被轉(zhuǎn)義的 HTML 特殊字符 HtmlUtil.encode 轉(zhuǎn)義文本中的 HTML 字符為安全的字符 HtmlUtil.cleanHtmlTag 清除所有 HTML 標(biāo)簽 HtmlUtil.removeHtmlTag 清除指定 HTML 標(biāo)簽和被標(biāo)簽包圍的內(nèi)容 HtmlUtil.unwrapHtmlTag 清除指定 HTML 標(biāo)簽,不包括內(nèi)容 HtmlUtil.removeHtmlAttr 去除 HTML 標(biāo)簽中的屬性 HtmlUtil.removeAllHtmlAttr 去除指定標(biāo)簽的所有屬性 HtmlUtil.filter 過(guò)濾 HTML 文本,防止 XSS 攻擊
CronUtil(定時(shí)任務(wù))
這個(gè)工具就更厲害了,完全不需要類似 quartz 這樣的框架來(lái)做定時(shí)任務(wù),而且 CronUtil 也不需要任何其他依賴,只需要在 resources 下建一個(gè)配置文件,然后在程序啟動(dòng)的時(shí)候?qū)⒍〞r(shí)任務(wù)開(kāi)啟就行了,如 Halo 的定時(shí)備份功能(每天凌晨 1 點(diǎn)備份一次)。
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();
?//啟動(dòng)定時(shí)任務(wù)
?CronUtil.start();
?log.info("定時(shí)任務(wù)啟動(dòng)成功!");
}
具體使用方法請(qǐng)看文檔 http://hutool.mydoc.io/?t=255673
好了,就介紹這三個(gè)工具類,有興趣的可以去試試其他的工具,挺全的,這應(yīng)該是我用過(guò)最好用的一個(gè)工具類庫(kù)了,值得一試。
官網(wǎng)地址:http://www.hutool.cn/
來(lái)源:ryanc.cc/archives/hutool-java-tools-lib
公眾號(hào)ID|javabaiwen
小編微信|619531440
每天分享技術(shù)干貨
視頻 | 電子書(shū) | 面試題?|?開(kāi)發(fā)經(jīng)驗(yàn)
