巨好用的Java工具類庫,GitHub星標10k+,你在用嗎?

巨好用的Java工具類庫,GitHub星標10k+,你在用嗎?

作者:Ryan Wang ryanc.cc/archives/hutool-java-tools-lib

簡介

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

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=001**?
cc.ryanc.halo.web.controller.admin.BackupController.backupDatabase=001**?
cc.ryanc.halo.web.controller.admin.BackupController.backupPosts=001**?

@Override
publicvoidonApplicationEvent(ContextRefreshedEventevent){
this.loadActiveTheme();
this.loadOptions();
this.loadFiles();
this.loadThemes();
//啟動定時任務
CronUtil.start();
log.info("定時任務啟動成功!");
}

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

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

Published in News by Awesome.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *