Java网络编程:理解URI、URL和URN
在Java网络编程中,URI、URL和URN是三个核心概念,但它们常被混淆。本文将详细解析它们的定义、区别以及在Java中的使用方法,通过示例代码展示如何使用java.net.URI
和java.net.URL
类处理网络资源标识。
1. URI、URL和URN的定义与区别
1.1 URI(Uniform Resource Identifier)
URI(统一资源标识符)是最广义的资源标识符,用于唯一标识任何资源(如网页、文件、邮箱地址等)。它不要求指定如何访问资源,仅关注标识本身。
- 特点:语法通用,解析不依赖具体协议,可以是URL、URN或其他形式。
- 示例:
https://darwinsys.com/index.html
mailto:user@example.com
bean:WonderBean
1.2 URL(Uniform Resource Locator)
URL(统一资源定位符)是URI的子集,专门用于定位网络资源。它包含协议(如http
、https
)、主机名、路径等信息,可直接用于访问资源。
- 特点:与具体协议相关,构造时可自动创建输入流。
- 示例:
https://darwinsys.com/index.html
1.3 URN(Uniform Resource Name)
URN(统一资源名称)是URI的另一个子集,用于命名资源,但不提供定位信息。它通常用于在特定命名空间中唯一标识资源。
- 特点:不包含定位信息,常见于
mailto:
、tel:
等方案。 - 示例:
mailto:user@example.com
、tel:+1-800-555-1212
1.4 关系总结
- URI:所有标识符的集合,包含URL和URN。
- URL:定位资源,包含访问协议和路径。
- UR