程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入门

  • 克隆

  • 类型转换

  • 日期时间

  • IO流相关

  • 工具类

    • 字符串工具 - `StrUtil`
    • 16进制工具 - `HexUtil`
    • 转义工具 - `EscapeUtil`
    • Hash算法工具 - `HashUtil`
    • URL 工具类 - `URLUtil`
      • XML 工具类 - `XmlUtil`
      • 对象工具类 - `ObjectUtil`
      • 反射工具类 - `ReflectUtil`
      • 泛型类型工具类 - `TypeUtil`
      • 分页工具类 - `PageUtil`
      • 剪贴板工具类 - `ClipboardUtil`
      • 类处理工具类 - `ClassUtil`
      • 枚举工具类 - `EnumUtil`
      • 命令行工具类 - `RuntimeUtil`
      • 数字工具类 - `NumberUtil`
      • 数组工具类 - `ArrayUtil`
      • 随机工具类 - `RandomUtil`
      • 唯一ID工具类 - `IdUtil`
      • 压缩工具类 - `ZipUtil`
      • 引用工具 - `ReferenceUtil`
      • 正则工具 - `ReUtil`
      • 身份证工具 - `IdcardUtil`
      • 信息脱敏工具 - `DesensitizedUtil`
      • 社会信用代码工具 - `CreditCodeUtil`
      • SPI 加载工具 - `ServiceLoaderUtil`
      • 字符编码工具 - `CharsetUtil`
      • 类加载工具 - `ClassLoaderUtil`
    • 语言特性

    • JavaBean

    • 集合类

    • Map

    • Codec编码

    • 文本操作

    • 注解

    • 比较器

    • 异常

    • 数学

    • 线程和并发

    • 图片

    • 网络

    • 源码编译

    • 配置文件

    • 日志

    • 缓存

    • JSON

    • 加密解密

    • DFA查找

    • HTTP客户端

    • 定时任务

    • 扩展

    • 切面

    • 脚本

    • Office文档操作

    • 系统调用

    • 图形验证码

    • 网络Socket

    • JWT

    • Hutoll
    • 工具类
    scholar
    2024-08-20
    目录

    URL 工具类 - URLUtil

    # URL 工具类 - URLUtil

    简介

    URLUtil 是 Hutool 提供的一个专门处理 URL(统一资源定位符)的工具类。URL 是用于表示互联网上资源位置的标准格式,在 Java 中,URL 也可以表示 ClassPath 下的资源路径。URLUtil 提供了丰富的工具方法,简化了 URL 处理和操作的工作,广泛适用于网络请求、资源访问、URL 标准化等场景。


    # 1. 获取 URL 对象

    URLUtil 提供了几种方法用于获取和处理 URL 对象,最常用的是通过字符串形式的 URL 地址创建 URL 对象。

    示例代码:

    import cn.hutool.core.util.URLUtil;
    
    import java.net.URL;
    
    public class URLUtilExample {
        public static void main(String[] args) {
            // 通过字符串创建 URL 对象
            String urlString = "http://www.example.com/index.html";
            URL url = URLUtil.url(urlString);
            System.out.println("URL 对象: " + url);
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    参数说明:

    • url(String url):通过字符串形式的 URL 地址创建 URL 对象。
      • url:URL 字符串,不能为 null。
      • 返回值:创建得到的 URL 对象。

    开发场景:

    • 在需要通过字符串形式的 URL 进行网络请求、资源访问时,可以使用此方法获取 URL 对象,方便后续处理。

    # 2. 获取 ClassPath 下资源的 URL

    当需要访问项目中的资源文件时,可以使用 getURL 方法轻松获取 ClassPath 下的资源 URL,常用于读取配置文件等操作。

    示例代码:

    import cn.hutool.core.util.URLUtil;
    
    import java.net.URL;
    
    public class URLUtilExample {
        public static void main(String[] args) {
            // 获取 ClassPath 下的资源 URL
            URL resourceUrl = URLUtil.getURL("config.properties");
            System.out.println("资源 URL: " + resourceUrl);
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    参数说明:

    • getURL(String resource):获取 ClassPath 下资源的 URL。
      • resource:资源的相对路径,不能为 null。
      • 返回值:获取到的 URL 对象。

    开发场景:

    • 在项目中需要读取配置文件、静态资源或其他 ClassPath 下的文件时,可以使用此方法获取其 URL,简化资源访问操作。

    # 3. 标准化 URL

    URL 在构建、处理或存储时可能会包含多余的斜杠、反斜杠等不规范字符,normalize 方法可以对 URL 进行标准化处理,确保 URL 的一致性。

    示例代码:

    import cn.hutool.core.util.URLUtil;
    
    public class URLUtilExample {
        public static void main(String[] args) {
            // 标准化 URL 链接
            String url = "http://www.example.com//aaa/bbb";
            String normalizedUrl = URLUtil.normalize(url);
            System.out.println("标准化后的 URL: " + normalizedUrl);
    
            url = "http://www.example.com//aaa/\\bbb?a=1&b=2";
            normalizedUrl = URLUtil.normalize(url);
            System.out.println("标准化后的 URL: " + normalizedUrl);
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    参数说明:

    • normalize(String url):标准化 URL 链接。
      • url:需要标准化的 URL 字符串,不能为 null。
      • 返回值:标准化后的 URL 字符串。

    开发场景:

    • 在处理 URL 时,标准化操作可以确保 URL 的格式一致,特别是在保存或比较 URL 时,使用此方法可避免因格式问题导致的错误。

    # 4. URL 编码与解码

    URLUtil 提供了对 URL 进行编码和解码的工具方法,适用于处理包含特殊字符的 URL。

    # encode(编码)

    import cn.hutool.core.util.URLUtil;
    
    public class URLUtilExample {
        public static void main(String[] args) {
            // 对字符串进行 URL 编码
            String body = "366466 - 副本.jpg";
            String encoded = URLUtil.encode(body);
            System.out.println("编码后的 URL: " + encoded);
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    参数说明:

    • encode(String content):将字符串进行 URL 编码。
      • content:需要编码的字符串,不能为 null。
      • 返回值:编码后的字符串,其中非 ASCII 字符和特殊字符被转为 %xx 格式。

    开发场景:

    • 在生成包含中文、空格或特殊字符的 URL 时,使用此方法进行编码,确保 URL 在传输过程中不会出错。

    # decode(解码)

    import cn.hutool.core.util.URLUtil;
    
    public class URLUtilExample {
        public static void main(String[] args) {
            // 对编码后的字符串进行 URL 解码
            String encoded = "366466%20-%20%E5%89%AF%E6%9C%AC.jpg";
            String decoded = URLUtil.decode(encoded);
            System.out.println("解码后的字符串: " + decoded);
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    参数说明:

    • decode(String content):将 URL 编码的字符串解码为原始字符串。
      • content:需要解码的字符串,不能为 null。
      • 返回值:解码后的原始字符串。

    开发场景:

    • 在接收到经过 URL 编码的数据时,可以使用此方法将数据解码为原始格式,便于显示和进一步处理。

    # 5. 提取 URL 的路径部分

    在需要对 URL 进行路由解析或路径处理时,getPath 方法可以从 URL 中提取路径部分,忽略查询参数等信息。

    示例代码:

    import cn.hutool.core.util.URLUtil;
    
    public class URLUtilExample {
        public static void main(String[] args) {
            // 提取 URL 的路径部分
            String url = "http://www.example.com/search?scope=ccc&q=ddd";
            String path = URLUtil.getPath(url);
            System.out.println("URL 的路径部分: " + path);
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    参数说明:

    • getPath(String uri):从 URI 中提取路径部分。
      • uri:URI 字符串,不能为 null。
      • 返回值:提取到的路径部分字符串。

    开发场景:

    • 在对 URL 进行路由解析、路径比对或进行文件路径处理时,可以使用此方法从 URL 中获取实际的路径部分。

    # 6. URL 和 URI 之间的转换

    在一些需要使用 URI 对象的场景中,URLUtil 提供了 toURI 方法,方便将 URL 或 URL 字符串转换为 URI 对象。

    示例代码:

    import cn.hutool.core.util.URLUtil;
    
    import java.net.URI;
    
    public class URLUtilExample {
        public static void main(String[] args) {
            // 将 URL 字符串转换为 URI 对象
            String urlString = "http://www.example.com/index.html";
            URI uri = URLUtil.toURI(urlString);
            System.out.println("URI 对象: " + uri);
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    参数说明:

    • toURI(String location):将 URL 字符串转换为 URI 对象。
      • location:URL 字符串,不能为 null。
      • 返回值:转换得到的 URI 对象。

    开发场景:

    • 在与需要 URI 类型的 API 进行对接时,可以使用此方法将 URL 转换为 URI,便于与其他 API 兼容。

    总结

    URLUtil 工具类在处理 URL 和 URI 相关操作方面提供了强大且便捷的工具方法。它适用于多种场景,如资源访问、URL 标准化、编码解码、路径提取等,极大地简化了 URL 的处理工作,提高了开发效率。

    编辑此页 (opens new window)
    上次更新: 2024/12/28, 18:32:08
    Hash算法工具 - `HashUtil`
    XML 工具类 - `XmlUtil`

    ← Hash算法工具 - `HashUtil` XML 工具类 - `XmlUtil`→

    Theme by Vdoing | Copyright © 2019-2025 程序员scholar
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式