Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)

Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)

本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我们会用到的工具类,就无需我们自己去封装了

以前我还自己去封装,emmm,我真的太傻了~,但是自己封装也不是不好,但是学会站在巨人的肩膀上,也非常有必要

下面就简单介绍一下 HuTool工具 与 其简单使用

相关链接:

HuTool 工具介绍

Hutool 是一个小而全的 Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,涵盖了Java开发开发中的方方面面

使用 Hutool 可节省开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug

该工具类主要对 文件、流、加密解密、转码、正则、线程、XML等 JDK方法进行封装,组成各种Util工具类,同时提供以下组件:

模块介绍
hutool-aopJDK动态代理封装,提供非IOC下的切面支持
hutool-bloomFilter布隆过滤,提供一些Hash算法的布隆过滤
hutool-cache简单缓存实现
hutool-core核心,包括Bean操作、日期、各种Util等
hutool-cron定时任务模块,提供类Crontab表达式的定时任务
hutool-crypto加密解密模块,提供对称、非对称和摘要算法封装
hutool-dbJDBC封装后的数据操作,基于ActiveRecord思想
hutool-dfa基于DFA模型的多关键字查找
hutool-extra扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
hutool-http基于HttpUrlConnection的Http客户端封装
hutool-log自动识别日志实现的日志门面
hutool-script脚本执行封装,例如Javascript
hutool-setting功能更强大的Setting配置文件和Properties封装
hutool-system系统参数调用封装(JVM信息等)
hutool-jsonJSON实现
hutool-captcha图片验证码实现
hutool-poi针对POI中Excel和Word的封装
hutool-socket基于Java的NIO和AIO的Socket封装
hutool-jwtJSON Web Token (JWT)封装实现

可根据需求对每个模块 单独引入,也可以通过引入hutool-all方式引入所有模块

HuTool工具使用

HuTool 工具 的API文档与官网把其能干的事情说的很详细了,下面主要是列举出工具类能干什么,方法有哪些,顺带可以提一下原理是啥,会用并且懂原理是最好的学习方式

1、导包

使用首先导包,在项目的 pom.xml 中加入以下内容:【Hutool 5.x 支持 JDK8+,JDK7 使用 Hutool 4.x版本】Maven中央库

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.0</version>
</dependency>

若使用jar包,可去该 下载jar 网址下载hutool-all-X.X.X.jar即可

2、使用

本小节主要围绕着 hutool 提供的工具类/功能为小点进行说明,一部分的说明来自官方文档,一部分来自看的源码,这里的源码版本为对应5.8.0(若与您看的源码有所不同,请查看版本是否相同)

本篇博客主要对项目开发过程中涉及的文件内容的转义、系统的属性工具,常用的一些工具类的封装( API 文档

  • EscapeUtil:转义和反转义工具类
  • XmlUtil:XML工具类
  • HashUtil:Hash算法工具类
  • SystemPropsUtil:系统属性工具
  • URLUtil:URL统一资源定位符相关工具类
  • RuntimeUtil:系统运行时工具类
2.1 EscapeUtil:转义和反转义工具类( API 文档

EscapeUtil 工具类主要对一些内容进行转义与反转义,具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法

  • 有关 XML 的特殊字符: XML 的特殊字符

  • 有关 HTML4 的特殊字符 参考 Common lang 3包里的特殊字符

方法功能支持类型原理
escapeXml
unescapeXml
转义XML、反转义XML中的特殊字符CharSequenceString.replace
escapeHtml4
unescapeHtml4
转义Html4、反转义Html4中的特殊字符CharSequenceString.replace
escape
escapeAll
unescape
Escape编码(Unicode),该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / ,其他所有的字符都会被转义序列替换
Escape编码(Unicode),该方法不会对 ASCII 字母和数字进行编码。其他所有的字符都会被转义序列替换
Escape解码
CharSequence
safeUnescape安全的unescape文本,当文本不是被escape的时候,返回原文Stringunescape 加了异常处理
2.2 XmlUtil:XML工具类( API 文档

XmlUtil:XML 工具类主要完成对 XML 文件的解析与内容读取进行封装,具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法

Xpath相关文章:

  • https://www.ibm.com/developerworks/cn/xml/x-javaxpathapi.html
  • https://www.ibm.com/developerworks/cn/xml/x-nmspccontext/
方法功能
readXML
readBySax
parseXml
读取解析XML文件
使用Sax方式读取指定的XML
将String类型的XML转换为XML文档
readObjectFromXml
writeObjectAsXml
从XML中读取对象
将可序列化的对象转换为XML写入文件
createXml
createDocumentBuilder
createDocumentBuilderFactory
创建XML文档
创建 DocumentBuilder
创建 DocumentBuilderFactory
appendChild
append
appendText
appendMap
appendIterator
在已有节点上创建子节点
追加数据子节点,可以是Map、集合、文本
追加文本子节点
追加Map数据子节点
追加集合节点
xmlToMap
xmlToBean
mapToXmlStr
mapToXml
beanToXml
XML格式字符串转换为Map
XML格式字符串转换为Bean
将Map转换为XML格式的字符串
将Map转换为XML
将Bean转换为XML
escape
unescape
转义XML特殊字符
反转义XML特殊字符
toStr
toFile
format
cleanInvalid
cleanComment
将XML文档转换为String
将XML文档写入到文件
格式化XML输出
去除XML文本中的无效字符
去除XML文本中的注释内容
createXPath
getByXPath
getElementByXPath
getNodeListByXPath
getNodeByXPath
创建XPath
通过XPath方式读取XML节点等信息
write
transform
将XML文档写出
getRootElement
getOwnerDocument
getElements
elementText
transElements
isElement
根据节点,判断节点是否是 Element 节点
disableXXE关闭XXE,避免 漏洞攻击
2.3 HashUtil:Hash算法工具类( API 文档

其里面主要针对 Hash 算法 的一些功能进行实现

方法功能
additiveHash
rotatingHash
oneByOneHash
加法hash
旋转hash
一次一个hash
bernstein
universal
zobrist
fnvHash
Bernstein’s hash
Universal Hashing
Zobrist Hashing
改进的32位FNV算法1
intHash
rsHash
jsHash
pjwHash
elfHash
bkdrHash
sdbmHash
xxx hash算法(前缀为对应的hash算法名称)
djbHash
dekHash
apHash
tianlHash
javaDefaultHash
mixHash
metroHash64
metroHash128
hfHash
hfIpHash
xxx hash算法(前缀为对应的hash算法名称)
cityHash32
cityHash64
cityHash128
CityHash算法32-bit实现
CityHash算法64-bit实现
CityHash算法128-bit实现
murmur32
murmur64
murmur128
MurmurHash算法32-bit实现
MurmurHash算法64-bit实现
MurmurHash算法128-bit实现
identityHashCode根据对象的内存地址生成相应的Hash值
2.4 SystemPropsUtil:系统属性工具类( API 文档

其里面主要针对 获取系统的Properties 的一些功能进行封装

方法功能支持类型原理
get
getBoolean
getInt
getLong
取得系统属性,如果因为Java安全的限制而失败,则将错误打在Log中,然后返回 defaultValue / null
获得boolean类型值
获得int类型值
获得long类型值
StringSystem.getProperty
getProps获取属性列表PropertiesSystem.getProperties()
set设置系统属性,value为 null 表示移除此属性StringSystem.setProperty / System.clearProperty
2.5 URLUtil:URL统一资源定位符相关工具类( API 文档

其里面主要针对 正则表达式相关 的一些功能进行封装,具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法

方法功能支持类型原理
url
toURI
toUrlForHttp
将 URI 转换为 URL
转URL为URI
将URL字符串转换为URL对象,并做必要验证
String / URI
String / URL
String
URI.toURL()
getStringURI
获取string协议的URL,类似于string:///xxxxxCharSequenceString.concat
isFileURL
isJarURL
isJarFileURL
提供的URL是否为文件
提供的URL是否为JAR包
提供的URL是否为Jar文件URL 判断依据为file协议且扩展名为.jar
URLURL.getProtocol()
getURL
getURLs
getHost
获得URL
获得多个URL( 数组)
获取URL中域名部分,只保留URL中的协议(Protocol)、Host,其它为null
String / File
File
URL
File.toURI().toURL()
completeUrl补全相对路径
getPath
getDecodedPath
获得path部分
从URL对象中获取不被编码的路径Path
URI.getPath()
encodeBlank
decode
单独编码URL中的空白符,空白符编码为%20
解码URL, 将%开头的16进制表示的内容解码
getStream
getReader
getJarFile
从URL中获取流
从URL中获得Reader
从URL中获取JarFile
URL
normalize标准化URL字符串,包括:
自动补齐“ http:// ”头
去除开头的\或者/
替换\为/
String
buildQuery将Map形式的Form表单数据转换为Url参数形式,如果key为空(null和"“)会被忽略,如果value为null,会被做为空白符(”")Map
getContentLength获取指定URL对应资源的内容长度,对于Http,其长度使用Content-Length头决定URL
getDataUriBase64
getDataUri
Data URI Scheme封装,数据格式为Base64
Data URI Scheme封装
2.6 RuntimeUtil:系统运行时工具类( API 文档

其里面主要针对 执行系统命令 的一些功能进行封装

方法功能支持类型原理
exec
execForLines
execForStr
执行系统命令,使用系统默认编码
执行系统命令,使用系统默认编码,执行结果按行区分
执行系统命令,使用传入的 charset 编码
String…
getResult
getResultLines
getErrorResult
获取系统命令执行结果,使用系统默认编码(可指定编码),获取后销毁进程Processio操作
getFreeMemory
getTotalMemory
getMaxMemory
getUsableMemory
获得JVM中剩余的内存数,单位byte
获得JVM已经从系统中获取到的总共的内存数,单位byte
获得JVM中可以从系统中获取的最大的内存数,单位byte,以-Xmx参数为准
获得JVM最大可用内存
Runtime.getRuntime().xxxxMemory()
destroy
getPid
销毁进程
获取当前进程ID,首先获取进程名称,读取@前的ID值,如果不存在,则读取进程名的hash值
getProcessorCount获得JVM可用的处理器数量(一般为CPU核心数)Runtime.getRuntime().availableProcessors()
addShutdownHook增加一个JVM关闭后的钩子,用于在JVM关闭时执行某些操作Runtime.getRuntime().addShutdownHook

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值