Hutool,一個賊好用的 Java 工具類庫,用過都說好~

 

  • 簡介程序員

  • 功能web

  • 簡單測試面試

    • SecureUtil(加密解密工具)算法

    • HtmlUtil(HTML工具類)數據庫

    • CronUtil(定時任務)編程


簡介

Hutool 諧音 「糊塗」,寓意追求 「萬事都做糊塗觀,無所謂失,無所謂得」 的境界。json

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));

HtmlUtil(HTML 工具類)

這個工具類就比較厲害了,不過我在 Halo 當中用得最多的仍是 HtmlUtil.encode,能夠將一些字符轉化爲安全字符,防止 xss 注入和 SQL 注入,好比下面的評論提交。

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

這就是防止有小壞蛋故意寫一些可執行的 js 代碼,而後提交評論,在後檯面板就會執行這一段代碼,比較危險,使用 encode 方法就能夠將 標籤給轉化成,這樣轉化以後,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

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

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

 

---END---

 

推薦閱讀:

這個項目太屌了吧!

【譯】Medium 2w+贊,「高效」程序員擁有的 7 項技能!

深度好文:Linux系統內存知識

Android WebView常見問題梳理優化總結!

微信又更新了,有這些變化!

建議收藏!TCP協議面試靈魂12 問!

Google Java編程風格指南來了

Android利用 PathMeasure 實現路徑動畫

 

 

本文分享自微信公衆號 - 技術最TOP(Tech-Android)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索