Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)
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 文件的解析与内容读取进行封装,具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法
- 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 文档 )
方法 | 功能 |
---|---|
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等工具类(四)相关推荐
- Java学习总结:58(Collections工具类)
Collections工具类 Java提供了一个集合的工具类--Collections,这个工具类可以实现List.Set.Map集合的操作.Collections类的常用方法如下: No. 方法 类 ...
- java配置文件工具类,java项目加载配置文件的工具类
java项目加载配置文件的工具类 package com.loadproperties; import java.io.IOException; import java.io.InputStream; ...
- Java实现Google的S2算法工具类
WGS84坐标系 GCJ02坐标系 BD09坐标系的各种转换 WGS84坐标系 GCJ02坐标系 BD09坐标系的各种转换 Google S2 经纬度 转 CellId 经纬度 转 cellToken ...
- Java 图片添加数字暗水印工具类
Java 图片添加数字暗水印工具类. package cnki.thesis.common.utils;import org.opencv.core.*;import java.util.ArrayL ...
- Java时间戳与日期格式转换工具类
Java时间戳与日期格式转换工具类 在做web开发时,有时候需要用到时间戳,在前台进行日期转换,从数据库中取出来是日期格式的,这里记录下使用的转换工具类(这些都是静态方法,通过类名.方法的形式即可调用 ...
- java获取客户端的IP地址工具类
java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...
- Java判断不为空的工具类总结
Java判断不为空的工具类总结 1.Java判断是否为空的工具类,可以直接使用.包含,String字符串,数组,集合等等. 1 package com.bie.util; 2 3 import jav ...
- (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入
-- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...
- java 静态类 安全_Java静态static工具类线程安全问题研究
针对静态方法有以下一些前提: 静态方法和实例方法的区别是静态方法只能引用静态变量,静态方法通过类名来调用,实例方法通过对象实例来调用 每个线程都有自己的线程栈,栈与线程同时创建,每一个虚拟机线程都有自 ...
最新文章
- websocketpp 打印发送数据
- 网络营销过程中如何避免网站的过度优化情况的发生?
- html和css入门 (三)
- 后台开发人员面试内容——Redis非关系数据库(三)
- win7锁定计算机要输入密码登陆,在win7中,怎么解决开机要输入用户密码
- 【vim小记】vim的复制粘贴(包括系统剪贴板)
- 【script】lambda的使用
- windows mysql5.7 忘记密码_Windows下Mysql5.7忘记root密码的解决方法
- MATLAB (2014b) “doc” cannot load libxul.so from Java on Linux system解决办法
- MAC 开发环境搭建及工具
- cadence SPB17.4 allegro + CAM350 10.5 / 10.7 / 14.6 出拼板
- (一)Redfish简介
- Flink SQL 之 Calcite Volcano优化器(源码解析)
- 纯前端实现验证码功能
- 一、什么是Nginx? Nginx的作用是什么?
- 计算机应用文摘版面费,数值计算与计算机应用发表论文期刊级别
- arduino蜂鸣器控制
- 一种使用可满足性模数理论模型检查可编程逻辑控制器系统的恶意软件检测方法
- ui设计参考网站以及ui设计参考书籍
- 如何免费下载百度文库文章的三种方法
热门文章
- Postman学习_Sinno_Song_新浪博客
- c语言fread()函数
- 关于python使用Onenbsp;Classamp;nbs…
- 那些年,我们一起做过的 Java 课后练习题(26 - 30)
- [RK356x] [Firefly-Ubuntu] 10min带你了解Ubuntu固件各个分区
- 腾讯云部署Hebe节点教程
- OUC_SE_Group04_Blog2
- dataBinding 理解
- 教你秒建受信任的本地 SSL 证书,彻底解决开发测试环境的无效证书警告烦恼!...
- 开源!MatrixBench:实时物联网场景的数据压测“兵法秘籍”