整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

html中需要转义的字符如何处理

产生原因:


我们知道html是如这些标签包含的格式化文本,当用浏览器打开时,浏览器内部的标签解释器把不同的标签解释为不同的含义。这时默认所有内容都是在标签之内的,标签本身并不是内容。如果内容中也有标签怎么办?这是个问题吗?当然。当一个负责讲解html是什么的页面输出时,html页面中必然包含有标签需要输出显示,而浏览器并不能智能的分清楚哪些是需要解释哪些不需要。


解决方法:


其中一个办法就是转义。为了区分需要解释和不需要解释的<>,将不需要解释的<>用转义字符代替,html会将它们解释为<>。和html一样,其他编程语言也有一些内置特殊符号需要用这样的方法处理,比如php中的$,下面列举一些:


如HTML转义符、java 转义符、xml 转义符、 oracle 转义符、sql 转义符 、sqlserver 转义符、php 转义符、asp 转义符、vb转义符、 javascript 转义符等等,还有网址中的百分号。


转义字符串有三部分组成:

&符号+实体名称/编号+;符号


例如,HTML的< >&"©的转义字符串分别是

“&lt;”或者“&#60;”

“&gt;”或者“&#62;”

“&amp;”或者“&#38;”

“&quot;”或者“&#34;”

“&copy;”或者“&#169;”


在高级编程语言中已经将转义字符的转义处理做成了函数。如php中的htmlspecialchars()负责将函数参数转为对应的转义字符串

今,Java开发者需要处理各种各样的任务,这包括但不限于:日期操作、加密算法、文件操作、Excel数据处理、网络请求等等。而在处理这些任务时,为了提高效率、降低开发难度和复杂度,我们需要借助一些工具类库。Hutool是一个Java工具类库,提供了许多常用的工具类和工具方法,使Java开发者的工作更加轻松和高效。在本文中,我们将介绍Hutool的一些特性和用法,以帮助您更好地使用Hutool。

Hutool简介

Hutool是一个Java工具类库,由国内的程序员loolly开发,目的是提供一些方便、快捷、实用的工具类和工具方法,使Java开发者能够更加轻松地处理各种任务。Hutool的特点是简单易用、功能全面、代码清晰、文档完备,支持JDK 1.8及以上版本。目前,Hutool已经被广泛使用,并且已经发布了3.x版本。Hutool 3.x版本的特点是升级了依赖库、增加了一些新的功能和优化了性能。

Hutool特性

Hutool提供了许多常用的工具类和工具方法,涵盖了各种任务,例如:

  • 常用字符串工具类
  • 日期时间工具类
  • 集合工具类
  • 数字工具类
  • 加密解密工具类
  • 文件操作工具类
  • Excel数据处理工具类
  • Http请求工具类

下面,我们将对其中的一些特性进行介绍。

字符串工具类

Hutool提供了一些常用的字符串工具类,例如:

  • StrUtil:提供了常用的字符串操作,例如字符串判空、截取、替换、格式化等。
  • ReUtil:提供了正则表达式工具方法,例如匹配、提取、替换等。
  • EscapeUtil:提供了对html、XML、Java、javascript等字符串进行转义的工具方法。
  • EmojiUtil:提供了对emoji表情进行编码和解码的工具方法。
  1. // 判断字符串是否为空或者null
  2. boolean isEmpty = StrUtil.isEmpty(str);

  3. // 替换字符串
  4. String replace = StrUtil.replace(str, "old", "new");

  5. // 正则表达式匹配
  6. List<String> matches = ReUtil.findAll("[0-9]+", str, 0, new ArrayList<String>());

  7. // HTML转义
  8. String html = EscapeUtil.escapeHtml(str);

  9. // Emoji编码解码
  10. String encode = EmojiUtil.encode("");
  11. String decode = EmojiUtil.decode(encode);

日期时间工具类

Hutool提供了一些常用的日期时间工具类,例如:

  • DateUtil:提供了日期时间的常用操作,例如日期时间格式化、日期时间计算、日期时间比较等。
  • CronUtil:提供了对Cron表达式的解析和计算。
  • ChineseDateUtil:提供了对农历日期的处理。
  1. // 日期时间格式化
  2. String format = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");

  3. // 日期时间计算
  4. Date newDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, 1);

  5. // 日期时间比较
  6. boolean isSameDay = DateUtil.isSameDay(new Date(), new Date());

  7. // Cron表达式解析
  8. CronPattern pattern = CronUtil.parse("0 0 12 * * ?");

  9. // 农历日期处理
  10. ChineseDate chineseDate = ChineseDateUtil.parse(new Date());

集合工具类

Hutool提供了一些常用的集合工具类,例如:

  • CollUtil:提供了集合的常用操作,例如集合的判空、集合的合并、集合的截取等。
  • ListUtil、SetUtil、MapUtil:提供了对List、Set、Map等集合的操作方法。
  • ArrayUtil:提供了对数组的常用操作,例如数组的判空、数组的合并、数组的截取等。
  1. // 集合判空
  2. boolean isEmpty = CollUtil.isEmpty(list);

  3. // 集合合并
  4. List<String> newList = CollUtil.addAllIfNotContains(list1, list2);

  5. // 集合截取
  6. List<String> subList = CollUtil.sub(list, 0, 5);

  7. // List转数组
  8. String[] array = ListUtil.toArray(list, String.class);

  9. // 数组判空
  10. boolean isEmpty = ArrayUtil.isEmpty(array);

  11. // 数组合并
  12. String[] newArray = ArrayUtil.addAll(array1, array2);

  13. // 数组截取
  14. String[] subArray = ArrayUtil.sub(array, 0, 5);

数字工具类

Hutool提供了一些常用的数字工具类,例如:

  • NumberUtil:提供了数字的常用操作,例如数字的格式化、数字的转换、数字的比较等。
  • RandomUtil:提供了生成随机数、随机Boolean值等的方法。
  1. // 数字格式化
  2. String format = NumberUtil.decimalFormat("123456.789", "#,##0.00");

  3. // 数字转换
  4. Integer intValue = NumberUtil.parseInt("123");

  5. // 数字比较
  6. int compare = NumberUtil.compare(1, 2);

  7. // 随机整数
  8. int randomInt = RandomUtil.randomInt(0, 100);

  9. // 随机Boolean值
  10. boolean randomBoolean = RandomUtil.randomBoolean();

加密解密工具类

Hutool提供了一些常用的加密解密工具类,例如:

  • DigestUtil:提供了常用的加密算法,例如MD5、SHA-1、SHA-256等。
  • SecureUtil:提供了常用的加密解密操作,例如AES加密、RSA加密、BASE64编码解码等。
  1. // MD5加密
  2. String md5 = DigestUtil.md5Hex("hello world");

  3. // SHA-256加密
  4. String sha256 = DigestUtil.sha256Hex("hello world");

  5. // AES加密解密
  6. String aesKey = "aeskey1234567890";
  7. String content = "hello world";
  8. String encrypt = SecureUtil.aes(aesKey.getBytes(), content.getBytes(), Cipher.ENCRYPT_MODE);
  9. String decrypt = SecureUtil.aes(aesKey.getBytes(), encrypt.getBytes(), Cipher.DECRYPT_MODE);

  10. // RSA加密解密
  11. KeyPair keyPair = SecureUtil.generateKeyPair("RSA");
  12. String publicKey = Base64.encode(keyPair.getPublic().getEncoded());
  13. String privateKey = Base64.encode(keyPair.getPrivate().getEncoded());
  14. String rsaEncrypt = SecureUtil.rsaEncrypt(content.getBytes(), publicKey);
  15. String rsaDecrypt = SecureUtil.rsaDecrypt(rsaEncrypt, privateKey);

  16. // BASE64编码解码
  17. String base64Encode = Base64.encode(content.getBytes());
  18. String base64Decode = StrUtil.str(Base64.decode(base64Encode), CharsetUtil.CHARSET_UTF_8);

文件操作工具类

Hutool提供了一些常用的文件操作工具类,例如:

  • FileUtil:提供了文件的常用操作,例如文件的创建、文件的复制、文件的删除等。
  • ZipUtil:提供了对压缩文件的操作,例如压缩文件的创建、压缩文件的解压等。
  1. // 文件创建
  2. File file = FileUtil.touch("D:/test.txt");

  3. // 文件复制
  4. FileUtil.copy("D:/test.txt", "D:/test_copy.txt", true);

  5. // 文件删除
  6. FileUtil.del("D:/test.txt");

  7. // 压缩文件创建
  8. ZipUtil.zip("D:/test.zip", "D:/test");

  9. // 压缩文件解压
  10. ZipUtil.unzip("D:/test.zip", "D:/unzip");

Excel数据处理工具类

Hutool提供了一些常用的Excel数据处理工具类,例如:

  • ExcelReader:提供了对Excel文件读取的操作,可以读取Excel中的数据、读取指定Sheet中的数据等。
  • ExcelWriter:提供了对Excel文件写入的操作,可以将数据写入到Excel中指定的Sheet中。
  1. // 读取Excel中的数据
  2. ExcelReader reader = ExcelUtil.getReader("D:/test.xlsx");
  3. List<List<Object>> readAll = reader.read();

  4. // 读取指定Sheet中的数据
  5. ExcelReader sheetReader = ExcelUtil.getReader("D:/test.xlsx", "Sheet1");
  6. List<List<Object>> readSheetAll = sheetReader.read();

  7. // 将数据写入Excel中指定的Sheet中
  8. ExcelWriter writer = ExcelUtil.getWriter("D:/test.xlsx", "Sheet1");
  9. writer.writeCellValue(0, 0, "hello");
  10. writer.flush();
  11. writer.close();

Http请求工具类

Hutool提供了一些常用的Http请求工具类,例如:

HttpUtil:提供了对Http请求的操作,例如发送GET请求、发送POST请求、下载文件等。

  1. // 发送GET请求
  2. String result = HttpUtil.get("https://www.baidu.com");

  3. // 发送POST请求
  4. Map<String, Object> paramMap = new HashMap<>();
  5. paramMap.put("username", "admin");
  6. paramMap.put("password", "123456");
  7. String postResult = HttpUtil.post("https://www.example.com/login", paramMap);

  8. // 下载文件
  9. FileUtil.writeBytes(HttpUtil.downloadBytes("https://www.example.com/file"), "D:/file.txt");

总之,Hutool是一个非常实用的Java工具类库,它提供了丰富的工具类,可以大大简化Java开发的过程,提高开发效率。无论是初学者还是资深开发者,都可以从中受益。

享阿里 P8 高级架构师吐血总结的 《Java 核心知识体系&面试资料.pdf》

据说是阿里 P8 级高级架构师吐血总结的一份 Java 核心知识.pdf, 内容覆盖很广,Java 核心基础、Java 多线程、高并发、Spring、微服务、Netty 与 RPC、Zookeeper、Kafka、RabbitMQ、Habase、设计模式、负载均衡、分布式缓存、Hadoop、Spark、Storm、云计算等。

另外,附送 100G 学习、面试视频文档哟~

获取方式:【关注 + 转发】后,私信我,回复关键字【资源】,即可免费无套路获取哦~

以下是资源的部分目录以及内容截图:

重要的事再说一遍,获取方式:【关注 + 转发】后,私信我,回复关键字【资源】,即可免费无套路获取哦~

正文开始

在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码。

一. org.apache.commons.io.IOUtils

closeQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块
toString:转换IO流、 Uri、 byte[]为String
copy:IO流数据复制,从输入流写到输出流中,最大支持2GB
toByteArray:从输入流、URI获取byte[]
write:把字节. 字符等写入输出流
toInputStream:把字符转换为输入流
readLines:从输入流中读取多行数据,返回List<String>
copyLarge:同copy,支持2GB以上数据的复制
lineIterator:从输入流返回一个迭代器,根据参数要求读取的数据量,全部读取,如果数据不够,则失败复制代码

二. org.apache.commons.io.FileUtils

deleteDirectory:删除文件夹
readFileToString:以字符形式读取文件内容
deleteQueitly:删除文件或文件夹且不会抛出异常
copyFile:复制文件
writeStringToFile:把字符写到目标文件,如果文件不存在,则创建
forceMkdir:强制创建文件夹,如果该文件夹父级目录不存在,则创建父级
write:把字符写到指定文件中
listFiles:列举某个目录下的文件(根据过滤器)
copyDirectory:复制文件夹
forceDelete:强制删除文件复制代码

三. org.apache.commons.lang.StringUtils

isBlank:字符串是否为空 (trim后判断)
isEmpty:字符串是否为空 (不trim并判断)
equals:字符串是否相等
join:合并数组为单一字符串,可传分隔符
split:分割字符串
EMPTY:返回空字符串
trimToNull:trim后为空字符串则转换为null
replace:替换字符串复制代码

四. org.apache.http.util.EntityUtils

toString:把Entity转换为字符串
consume:确保Entity中的内容全部被消费。可以看到源码里又一次消费了Entity的内容,假如用户没有消费,那调用Entity时候将会把它消费掉
toByteArray:把Entity转换为字节流
consumeQuietly:和consume一样,但不抛异常
getContentCharset:获取内容的编码复制代码

五. org.apache.commons.lang3.StringUtils

isBlank:字符串是否为空 (trim后判断)
isEmpty:字符串是否为空 (不trim并判断)
equals:字符串是否相等
join:合并数组为单一字符串,可传分隔符
split:分割字符串
EMPTY:返回空字符串
replace:替换字符串
capitalize:首字符大写复制代码

六. org.apache.commons.io.FilenameUtils

getExtension:返回文件后缀名
getBaseName:返回文件名,不包含后缀名
getName:返回文件全名
concat:按命令行风格组合文件路径(详见方法注释)
removeExtension:删除后缀名
normalize:使路径正常化
wildcardMatch:匹配通配符
seperatorToUnix:路径分隔符改成unix系统格式的,即/
getFullPath:获取文件路径,不包括文件名
isExtension:检查文件后缀名是不是传入参数(List<String>)中的一个复制代码

七. org.springframework.util.StringUtils

hasText:检查字符串中是否包含文本
hasLength:检测字符串是否长度大于0
isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null)
commaDelimitedStringToArray:逗号分隔的String转换为数组
collectionToDelimitedString:把集合转为CSV格式字符串
replace 替换字符串
7. delimitedListToStringArray:相当于split
uncapitalize:首字母小写
collectionToDelimitedCommaString:把集合转为CSV格式字符串
tokenizeToStringArray:和split基本一样,但能自动去掉空白的单词复制代码

八. org.apache.commons.lang.ArrayUtils

contains:是否包含某字符串
addAll:添加整个数组
clone:克隆一个数组
isEmpty:是否空数组
add:向数组添加元素
subarray:截取数组
indexOf:查找某个元素的下标
isEquals:比较数组是否相等
toObject:基础类型数据数组转换为对应的Object数组复制代码

九. org.apache.commons.lang.StringEscapeUtils

参考十五:org.apache.commons.lang3.StringEscapeUtils复制代码

十. org.apache.http.client.utils.URLEncodedUtils

format:格式化参数,返回一个HTTP POST或者HTTP PUT可用application/x-www-form-urlencoded字符串
parse:把String或者URI等转换为List<NameValuePair>复制代码

十一. org.apache.commons.codec.digest.DigestUtils

md5Hex:MD5加密,返回32位字符串
sha1Hex:SHA-1加密
sha256Hex:SHA-256加密
sha512Hex:SHA-512加密
md5:MD5加密,返回16位字符串复制代码

十二. org.apache.commons.collections.CollectionUtils

isEmpty:是否为空
select:根据条件筛选集合元素
transform:根据指定方法处理集合元素,类似List的map()
filter:过滤元素,雷瑟List的filter()
find:基本和select一样
collect:和transform 差不多一样,但是返回新数组
forAllDo:调用每个元素的指定方法
isEqualCollection:判断两个集合是否一致复制代码

十三. org.apache.commons.lang3.ArrayUtils

contains:是否包含某个字符串
addAll:添加整个数组
clone:克隆一个数组
isEmpty:是否空数组
add:向数组添加元素
subarray:截取数组
indexOf:查找某个元素的下标
isEquals:比较数组是否相等
toObject:基础类型数据数组转换为对应的Object数组复制代码

十四. org.apache.commons.beanutils.PropertyUtils

getProperty:获取对象属性值
setProperty:设置对象属性值
getPropertyDiscriptor:获取属性描述器
isReadable:检查属性是否可访问
copyProperties:复制属性值,从一个对象到另一个对象
getPropertyDiscriptors:获取所有属性描述器
isWriteable:检查属性是否可写
getPropertyType:获取对象属性类型复制代码

十五. org.apache.commons.lang3.StringEscapeUtils

unescapeHtml4:转义html
escapeHtml4:反转义html
escapeXml:转义xml
unescapeXml:反转义xml
escapeJava:转义unicode编码
escapeEcmaScript:转义EcmaScript字符
unescapeJava:反转义unicode编码
escapeJson:转义json字符
escapeXml10:转义Xml10复制代码

这个现在已经废弃了,建议使用commons-text包里面的方法。

十六. org.apache.commons.beanutils.BeanUtils

copyPeoperties:复制属性值,从一个对象到另一个对象
getProperty:获取对象属性值
setProperty:设置对象属性值
populate:根据Map给属性复制
copyPeoperty:复制单个值,从一个对象到另一个对象
cloneBean:克隆bean实例复制代码

现在你只要了解了以上16种最流行的工具类方法,你就不必要再自己写工具类了,不必重复造轮子。大部分工具类方法通过其名字就能明白其用途,如果不清楚的,可以看下别人是怎么用的,或者去网上查询其用法。

另外,工具类,根据阿里开发手册,包名如果要使用util不能带s,工具类命名为 XxxUtils

作者:alterem