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

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

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

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

相关链接:

  • 官网 / 备用官网
  • API 总览

HuTool 工具介绍

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

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

该工具类主要对 文件、流、加密解密、转码、正则、线程、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 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
hutool-http 基于HttpUrlConnection的Http客户端封装
hutool-log 自动识别日志实现的日志门面
hutool-script 脚本执行封装,例如Javascript
hutool-setting 功能更强大的Setting配置文件和Properties封装
hutool-system 系统参数调用封装(JVM信息等)
hutool-json JSON实现
hutool-captcha 图片验证码实现
hutool-poi 针对POI中Excel和Word的封装
hutool-socket 基于Java的NIO和AIO的Socket封装
hutool-jwt JSON 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中的特殊字符 CharSequence String.replace
escapeHtml4
unescapeHtml4
转义Html4、反转义Html4中的特殊字符 CharSequence String.replace
escape
escapeAll
unescape
Escape编码(Unicode),该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / ,其他所有的字符都会被转义序列替换
Escape编码(Unicode),该方法不会对 ASCII 字母和数字进行编码。其他所有的字符都会被转义序列替换
Escape解码
CharSequence
safeUnescape 安全的unescape文本,当文本不是被escape的时候,返回原文 String unescape 加了异常处理

2.2 XmlUtil:XML工具类( API 文档 )

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

Xpath相关文章:

方法 功能
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类型值
String System.getProperty
getProps 获取属性列表Properties System.getProperties()
set 设置系统属性,value为 null 表示移除此属性 String System.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:///xxxxx CharSequence String.concat
isFileURL
isJarURL
isJarFileURL
提供的URL是否为文件
提供的URL是否为JAR包
提供的URL是否为Jar文件URL 判断依据为file协议且扩展名为.jar
URL URL.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
获取系统命令执行结果,使用系统默认编码(可指定编码),获取后销毁进程 Process io操作
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

Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)相关推荐

  1. Java学习总结:58(Collections工具类)

    Collections工具类 Java提供了一个集合的工具类--Collections,这个工具类可以实现List.Set.Map集合的操作.Collections类的常用方法如下: No. 方法 类 ...

  2. java配置文件工具类,java项目加载配置文件的工具类

    java项目加载配置文件的工具类 package com.loadproperties; import java.io.IOException; import java.io.InputStream; ...

  3. Java实现Google的S2算法工具类

    WGS84坐标系 GCJ02坐标系 BD09坐标系的各种转换 WGS84坐标系 GCJ02坐标系 BD09坐标系的各种转换 Google S2 经纬度 转 CellId 经纬度 转 cellToken ...

  4. Java 图片添加数字暗水印工具类

    Java 图片添加数字暗水印工具类. package cnki.thesis.common.utils;import org.opencv.core.*;import java.util.ArrayL ...

  5. Java时间戳与日期格式转换工具类

    Java时间戳与日期格式转换工具类 在做web开发时,有时候需要用到时间戳,在前台进行日期转换,从数据库中取出来是日期格式的,这里记录下使用的转换工具类(这些都是静态方法,通过类名.方法的形式即可调用 ...

  6. java获取客户端的IP地址工具类

    java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...

  7. Java判断不为空的工具类总结

    Java判断不为空的工具类总结 1.Java判断是否为空的工具类,可以直接使用.包含,String字符串,数组,集合等等. 1 package com.bie.util; 2 3 import jav ...

  8. (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入

    -- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...

  9. java 静态类 安全_Java静态static工具类线程安全问题研究

    针对静态方法有以下一些前提: 静态方法和实例方法的区别是静态方法只能引用静态变量,静态方法通过类名来调用,实例方法通过对象实例来调用 每个线程都有自己的线程栈,栈与线程同时创建,每一个虚拟机线程都有自 ...

最新文章

  1. websocketpp 打印发送数据
  2. 网络营销过程中如何避免网站的过度优化情况的发生?
  3. html和css入门 (三)
  4. 后台开发人员面试内容——Redis非关系数据库(三)
  5. win7锁定计算机要输入密码登陆,在win7中,怎么解决开机要输入用户密码
  6. 【vim小记】vim的复制粘贴(包括系统剪贴板)
  7. 【script】lambda的使用
  8. windows mysql5.7 忘记密码_Windows下Mysql5.7忘记root密码的解决方法
  9. MATLAB (2014b) “doc” cannot load libxul.so from Java on Linux system解决办法
  10. MAC 开发环境搭建及工具
  11. cadence SPB17.4 allegro + CAM350 10.5 / 10.7 / 14.6 出拼板
  12. (一)Redfish简介
  13. Flink SQL 之 Calcite Volcano优化器(源码解析)
  14. 纯前端实现验证码功能
  15. 一、什么是Nginx? Nginx的作用是什么?
  16. 计算机应用文摘版面费,数值计算与计算机应用发表论文期刊级别
  17. arduino蜂鸣器控制
  18. 一种使用可满足性模数理论模型检查可编程逻辑控制器系统的恶意软件检测方法
  19. ui设计参考网站以及ui设计参考书籍
  20. 如何免费下载百度文库文章的三种方法

热门文章

  1. Postman学习_Sinno_Song_新浪博客
  2. c语言fread()函数
  3. 关于python使用Onenbsp;Classamp;nbs…
  4. 那些年,我们一起做过的 Java 课后练习题(26 - 30)
  5. [RK356x] [Firefly-Ubuntu] 10min带你了解Ubuntu固件各个分区
  6. 腾讯云部署Hebe节点教程
  7. OUC_SE_Group04_Blog2
  8. dataBinding 理解
  9. 教你秒建受信任的本地 SSL 证书,彻底解决开发测试环境的无效证书警告烦恼!...
  10. 开源!MatrixBench:实时物联网场景的数据压测“兵法秘籍”