Hutool工具包的简介与基础方法的使用

简介

        官方文档:Hutool参考文档

        不要问Hutool有什么,而是它什么都有,Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

举个栗子:

        计算md5

        以前:打开百度 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用

        现在:引入Hutool->SecureUtil.md5()

🛠️ 包含的组件

        一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、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

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

🍑常用模块

1.HTTP客户端

1.1http工具类

GET请求栗子:

// 最简单的HTTP请求,可以自动通过header等信息判断编码,不区分HTTP和HTTPS
String result1= HttpUtil.get("https://www.baidu.com");

// 当无法识别页面编码的时候,可以自定义请求页面的编码
String result2= HttpUtil.get("https://www.baidu.com", CharsetUtil.CHARSET_UTF_8);

//可以单独传入http参数,这样参数会自动做URL编码,拼接在URL中
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");

String result3= HttpUtil.get("https://www.baidu.com", paramMap);

POST请求栗子:

HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");

String result= HttpUtil.post("https://www.baidu.com", paramMap);
1.2HTTP请求-HttpRequest
//普通表单--以post请求为例 
String url= "";
String signature = "";
HttpRequest.post(url).header("X-SIGNATURE",signature)//头信息,多个头信息多次调用此方法即可
      .form("","")//表单内容
      .timeout(20000)//超时,毫秒
      .execute().body();

//restful请求
String json = ...;
String result2 = HttpRequest.post(url)
    .body(json)
    .execute().body();
1.3HTTP请求-HttpResponse

        在调用三方api时需要获取到相应的响应信息

String url = "";
HttpResponse res = HttpRequest.post(url).body("根据需求传入对应的数据").header("","")
         .execute();
//获取响应状态码
int status = res.getStatus();
//获取响应数据请求头参数
String name = res.header("参数名");
//获取响应体
String body = res.body();

2.信息脱敏

        Hutool目前支持的脱敏数据有:用户id,中文姓名,身份证号,座机号,手机号,地址,电子邮件,密码,中国大陆车牌,银行卡

举个栗子:

//身份证信息
String s1 = DesensitizedUtil.idCardNum("51343620000320711X", 2, 2);
//s = 51**************1X;

//手机号码
String s2 = DesensitizedUtil.mobilePhone("18049531999");
//s2 = 180****1999

//密码,只保留*号
String s3 = DesensitizedUtil.password("1234567890");
// s3 = **********

//银行卡号
String s4 = DesensitizedUtil.bankCard("银行卡号");
//s4 = 6214 **** **** 5612
......

 这里就不一 一举例了

3.JSON工具-JSONUtil

对象,map转为JSON格式的字符串

如果传入的map是有序的,那么解析出来的JSON字符串也将是有序的

HashMap<String, String> map = new HashMap<>();
        map.put("name","张三");
        map.put("age","88");
        map.put("intro","爱打飞机");
        User user = new User("李四", "99", "吃");
        System.out.println("map:"+JSONUtil.toJsonStr(map));
        System.out.println("对象:"+JSONUtil.toJsonStr(user));

输出:

        map:{"intro":"爱打飞机","name":"张三","age":"88"}
        对象:{"name":"李四","age":"99","intro":"吃"}

JSONobject转换为对象

String jsonStr = "{\"intro\":\"爱打飞机\",\"name\":\"张三\",\"age\":\"88\"}";
        User user = JSONUtil.toBean(jsonStr, User.class);
        System.out.println(user);

输出:User(name=张三, age=88, intro=爱打飞机)

格式化JSON字符串:

String jsonStr = "{\"intro\":\"爱打飞机\",\"name\":\"张三\",\"age\":\"88\"}";
        String s = JSONUtil.toJsonPrettyStr(jsonStr);
        System.out.println(s)

输出:

{
    "intro": "爱打飞机",
    "name": "张三",
    "age": "88"
}

 还有一些常用的方法:

// 将JSON字符串解析为JSONObject对象
JSONObject jsonObject = JSONUtil.parseObj(jsonString);

// 将JSONObject对象转换为指定类型的Java对象
YourClass yourClass = JSONUtil.toBean(jsonObject, YourClass.class);

// 将Java对象转换为JSONObject对象
JSONObject jsonObject = JSONUtil.parseObj(yourObject);

// 获取JSON中指定路径的值
Object value = JSONUtil.getByPath(jsonObject, "path.to.value");

// 设置JSON中指定路径的值
JSONUtil.putByPath(jsonObject, "path.to.value", value);

// 删除JSON中指定路径的值
JSONUtil.delByPath(jsonObject, "path.to.value");

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

00后码畜ova

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值