Hutool是Hu + tool的自造词,前者致敬我的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界。
Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。(抄自作者简介)
官网地址:http://www.hutool.cn/
API文档:https://www.hutool.cn/docs/#/
[Maven]
在项目的pom.xml的dependencies中加入以下内容:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.2</version>
</dependency>
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
这两天使用Hutool把Halo里面的一些代码给替换掉了,不得不说,用起来十分顺心,下面简单介绍一下我用到的一些Hutool的工具类。
主要是在登录的时候还有修改密码的时候用到的,因为数据库里面的密码是md5加密处理的,所以登录的时候需要先加密之后再到数据库进行查询,使用Hutool的话,只需要调用SecureUtil中的md5方法就可以了。
user = userService.userLoginByName(loginName,SecureUtil.md5(loginPwd));
这个工具类就比较厉害了,不过我在Halo当中用得最多的还是HtmlUtil.encode
,可以将一些字符转化为安全字符,防止xss注入和SQL注入,比如下面的评论提交。
comment.setCommentAuthor(HtmlUtil.encode(comment.getCommentAuthor()));
这就是防止有小坏蛋故意写一些可执行的js代码,然后提交评论,在后台面板就会执行这一段代码,比较危险,使用encode方法就可以将标签给转化成
,这样转化之后,js代码就不会执行了。
另外,HtmlUtil还提供了以下方法,有兴趣的可以去试一下。
这个工具就更厉害了,完全不需要类似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("定时任务启动成功!");
}