学习Java的Hutool工具类库(1)

举报
zekelove 发表于 2021/11/07 19:31:29 2021/11/07
【摘要】 Hutool是一个小而全的Java工具类库,通过静态方法封装,它帮助我们简化每一行代码,减少每一个方法,将一些通用类和方法提炼出来,在项目中引用 jar 包后,促使我们拿来就用,从而提高工作效率。主要是对文件、流、加密解密、转码、正则、线程、XML 等 JDK 方法进行封装,组成各种 Util 工具类。

在我们开发Java项目的过程中,JDK的有些功能并没有,经常会有一些特殊的内容要处理,比如:日期和时间处理,字符串、数字处理,生成二维码等功能,如果自已一个一个写不仅浪费时间,还要考虑效率可靠性。如果有现成一个成熟的工具类库,那我们使用它何乐而不为呢,还能提高效率节省时间。

Hutool简介

Hutool是一个小而全的Java工具类库,通过静态方法封装,它帮助我们简化每一行代码,减少每一个方法,将一些通用类和方法提炼出来,在项目中引用 jar 包后,促使我们拿来就用,从而提高工作效率。

模块功能

它是一个 Java 基础工具类,对文件、流、加密解密、转码、正则、线程、XML 等 JDK 方法进行封装,组成各种 Util 工具类,同时提供以下组件:

hutool-aop: JDK动态代理封装,提供非IOC下的切面支持。

hutool-bloomFilter: 布隆过滤,提供一些Hash算法的布隆过滤。

hutool-cache: 简单缓存实现。

hutool-core: 核心,包括Bean操作,日期,各种Util等等。

hutool-cron: 定时任务模块,提供类Crontab表达式的定时任务。

hutool-crypto: 加密解密模块,提供对称,非对称和摘要算法封装。

hutool-dfa: 基于DFA模型的多关键字查找。

hutool-db: JDBC封装后的数据操作,基于ActiveRecord思想。

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-core,hutool-crypto,hutool-extra,hutool-http,hutool-captcha

安装方式

1.Maven

在项目的 pom.xml 的 dependencies 中加入以下内容

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

2.Gradle

implementation 'cn.hutool:hutool-all:5.7.15'

3.引用 jar 包

下载地址:https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.7.15/

项目工程右键->Build Path(构建路径)->Add External Archives...(添加外部归档),选中下载的“hutool-all-5.7.15.jar”文件。

使用hutool-core

通过引入 hutool-all 方式引入所有模块,也可以根据需求单独引入使用的模块。

日期和时间

引入:import cn.hutool.core.date.DateUtil;

public class test1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 获取当前时间
		Date date = DateUtil.date();
		System.out.println(date);
		// 当前时间,格式:yyyy-MM-dd HH:mm:ss
		String now = DateUtil.now();
		System.out.println(now);
		// 当前日期,格式:yyyy-MM-dd
		String today= DateUtil.today();
		System.out.println(today);
		
		// 字符串转日期类型
		String dateStr = "2021-11-06";
		Date date1 = DateUtil.parse(dateStr);
		System.out.println(date1);
	}
}

字符串

引入:import cn.hutool.core.util.StrUtil;

public class test1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 字符串处理
		String str = "hello world";
		// hasEmpty只判断是否为null或者空字符串,返回 true/false
		System.out.println(StrUtil.hasEmpty(str));
		// 截取字符串,sub(字符串,起始位置索引,结束位置索引)
		String strSub1 = StrUtil.sub(str, 1, 3);
		System.out.println(strSub1);
		// 字符串模板,格式化
		String str1 = "hello {}";
		String str2 = StrUtil.format(str1, "world");
		System.out.println(str2);
	}
}

类型转换

引入:import cn.hutool.core.convert.Convert;

public class test1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 类型转换
		// 数字转换字符串
		int a = 1;
		String aStr = Convert.toStr(a);
		// 转换为日期对象
		String b = "2017-05-06";
		Date value = Convert.toDate(b);
		// 转换为集合
		Object[] c = {3, "1", "hello", ""};
		List<?> list = Convert.toList(c);
		System.out.println(list);
	}
}

使用hutool-captcha

图形验证码

引入:import cn.hutool.captcha.CaptchaUtil;
           import cn.hutool.captcha.LineCaptcha;

public class test1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 图形验证码
		// 定义图形验证码的长和宽
		LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
		// 图形验证码写出,可以写出到文件,也可以写出到流
		lineCaptcha.write("d:/line.png");
		// 输出code
		System.out.println(lineCaptcha.getCode());
		// 验证图形验证码的有效性,返回 boolean 值
		System.out.println(lineCaptcha.verify("abcd"));
		
	}
}

注:关于 Hutool API 更多的学习内容,请参考官方文档:https://hutool.cn/docs/#/

温馨提示

文章内容如果写的存在问题欢迎留言指出,让我们共同交流,共同探讨,共同进步~~~

文章如果对你有帮助,动动你的小手点个赞,鼓励一下,给我前行的动力。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。