📅  最后修改于: 2023-12-03 14:42:42.462000             🧑  作者: Mango
在 Java 编程中,URL、URI 和 URN 是处理网络资源的重要概念,但是它们有着不同的作用和特点。下面将详细介绍它们之间的区别。
URL(统一资源定位符)是 Web 的基础,它是一个字符串,用于标识互联网上的资源。它的格式通常为 protocol://hostname:port/path?query#fragment
,其中:
protocol
:表示使用的协议,常见的有 http
、https
、ftp
等;hostname
:表示主机名或 IP 地址;port
:表示端口号,可选,默认为协议的默认端口;path
:表示资源的路径;query
:表示查询参数,可选;fragment
:表示文档内的锚点,可选。URL 的作用是定位一个 Web 规范定义的资源,例如 HTML 文档、图像文件、视频文件等。Java 中提供了 java.net.URL
类来表示 URL,可以通过它连接 Web 服务器并获取资源。
以下是一个 URL 的示例:
URL url = new URL("https://www.example.com:443/index.html?foo=bar#section1");
URI(统一资源标识符)是一种通用的标识符,它用于标识任何类型的资源,不仅仅局限于 Web 资源。URI 和 URL 有相似之处,但是它们之间也存在差异。URI 的格式可以类比 URL,但是其中的格式元素可以更为广泛,包括:
scheme
:URI 的方案名称,例如 http
、ftp
等;authority
:URI 的授权区域,包括主机名、端口号等;path
:资源的路径;query
:查询参数;fragment
:锚点。Java 中提供了 java.net.URI
类表示 URI,它比 URL 更加通用。
以下是一个 URI 的示例:
URI uri = new URI("ftp://ftp.example.com/files/file.txt");
URN(统一资源名)是一种特殊的 URI,它用于标识资源的名称,而不是其位置。URN 通常用来命名和标识一些重要资源,例如电子书、文化遗产等。URN 的格式通常为 urn:<namespace>:<identifier>
,其中:
namespace
:命名空间,用于区分不同资源;identifier
:资源的标识符。Java 中没有单独的类表示 URN,但是可以使用 java.net.URI
类来表示。
以下是一个 URN 的示例:
URI urn = new URI("urn:isbn:0-7615-3643-4");
URL、URI 和 URN 都是用于标识和定位资源的概念,但是它们的作用和特点有所不同。URL 主要用于标识 Web 资源并定位其位置,URI 则更为通用;URN 则用于标识资源的名称,而不是其位置。在 Java 中,可以使用 java.net.URL
和 java.net.URI
类来处理这些概念。