还在封装各种 Util 工具类?这个神级框架帮你解决所有问题!
来源 | 网络
Hutool 谐音 “糊涂”,寓意追求 “万事都作糊涂观,无所谓失,无所谓得” 的境界。
Hutool 是一个 Java 工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让 Java 语言也可以 “甜甜的”。Hutool 最初是我项目中 “util” 包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。(FROM 自作者简介)
功能
一个 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/
项目实战
最近艿艿在重构 ruoyi-vue 开源项目,就使用 Hutool 进行替代原项目中的各种 Util 工具类,直接删除了小 5000 行代码。
GitHub 地址:https://github.com/YunaiV/ruoyi-vue-pro
感兴趣的胖友可以关注一波,预计年前发布正式版本!
= = 最近每天肝到 1 点多,男人至死都是少年!
喜欢本文的朋友,欢迎点击下方卡片
关注我,订阅更多精彩内容
往期推荐
明天即将开工,把今年的Flag加到头像上,时刻鞭策自己吧!
情人节微信红包数据公布,你离海王与海后有多远...
发现一位大佬的算法刷题笔记PDF
初五迎财神!即使没有年终奖,也要来一发红包!
年终凡尔赛,都是别人家的公司...
老外出了个奇葩App:上床前要点同意,不然算性侵...
还在封装各种 Util 工具类?这个神级框架帮你解决所有问题!相关推荐
- httpurlconnection 封装_不要再封装各种Util工具类了,看看这个框架
不要再封装各种Util工具类了,看看这个框架 Hutool 谐音 "糊涂",寓意追求 "万事都作糊涂观,无所谓失,无所谓得" 的境界. Hutool 是一 ...
- 不要再自己封装各种Util工具类了,这款神仙级框架你值得拥有!
点击关注公众号,Java干货及时送达 来源:ryanc.cc/archives/hutool-java-tools-lib 作者:Ryan Wang 简介 Hutool 谐音 "糊涂&quo ...
- 不要再封装各种Util工具类了,这个神级框架值得拥有!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! Hutool 谐音 "糊涂",寓意追求 ...
- 封装时间转换工具类_推荐一款封装各种Util工具类,这款神仙级框架你值得拥有!...
点击上方 "Java指南者"关注, 星标或置顶一起成长 免费送 1024GB 精品学习资源 来源:ryanc.cc/archives/hutool-java-tools-lib 简 ...
- 加密封装 怎么把_不要再封装各种Util工具类了,这个神级框架值得拥有!
Hutool 谐音 "糊涂",寓意追求 "万事都作糊涂观,无所谓失,无所谓得" 的境界. Hutool 是一个 Java 工具包,也只是一个工具包,它帮助我们简 ...
- vue-03-4:vue封装方法到工具类
vue-03-4:vue封装方法到工具类 参考博客:咸鱼最牛逼 地址:https://blog.csdn.net/panchang199266?utm_source=feed 一.步骤 1.src目录 ...
- 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫...
前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,这样很容易被服务器封IP,因此需要设置IP代理,但又不想花钱买,网上有免费IP代理,但大多都数都是不可 ...
- 简单封装浏览器 cookie 工具类
版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...
- cookie工具类 java_springboot封装JsonUtil,CookieUtil工具类代码实例
这篇文章主要介绍了springboot封装JsonUtil,CookieUtil工具类过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Jso ...
最新文章
- eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
- c99变长数组_你学过数组,那你知道柔性数组吗?
- xshell突然连接不上虚拟机解决办法
- [深圳活动] OTT互联网机顶盒产品分享活动
- ubuntu下安装kde Plasma
- Mentor PADS 9.5下载安装及破解指南
- 徒手撸了个markdown笔记平台
- 按照行数分割excel
- java 3dm_3dm游戏运行库合集安装包-游戏运行库合集安装包下载v3.0DM整理-西西软件下载...
- Mac系统用命令打开ping端口的方法
- 如何获取手机app的签名
- 天使投资(AI),风险投资(VC),私募基金(PE);A轮,B轮,C轮,D轮,E轮,F轮融资之间的区别...
- 20.P153课后习题6-13 背包问题。设有一个背包可以放入物品的重量为s,现有n件物品,重量分别为w[0],w[1],...w[n-1]。问题是能否从这n件物品中选择若干件放入此背包中使得放入的重
- (转)台式机华硕主板双显卡切换,怎么舒服怎么来
- Unity开发时遇到的各种需要注意的地方
- vsCode好用插件记录
- 加粉推广全能助手 推广辅助工具 好多粉微信号加粉复制统计工具加强版,加粉推广神器,持续完善升级,新增统计点击转化,页面插件功能,完美支持ocpc接口
- 卷积神经网络CNN-全连接层
- 如何查看MindSpore的IR图
- 修改SpringBoot默认的JSON转换器中的问题
热门文章
- docker 报错 non-overlapping IPv4 address pool among the defaults to assign to the network 解决方法
- php的memcache和memcached扩展区别
- umdh windbg分析内存泄露
- winsock setsockopt 详解
- 使用WinCrypt进行简单的对称加密实例
- 编程之美2.15 二维数组最大子数组的和(数组下标从(1,1)开始)
- ICA--独立成分分析(Independent Component Analysis)
- 项目3----云服务器及其提供商
- OpenStack-MitakaCentos7.2双节点搭建--(二)Keystone(认证服务)
- Xen 启动客户虚拟机的过程分析