📜  JavaURL、URI 和 URN 的区别(1)

📅  最后修改于: 2023-12-03 14:42:42.462000             🧑  作者: Mango

Java URL、URI 和 URN 的区别

在 Java 编程中,URL、URI 和 URN 是处理网络资源的重要概念,但是它们有着不同的作用和特点。下面将详细介绍它们之间的区别。

URL(Uniform Resource Locator)

URL(统一资源定位符)是 Web 的基础,它是一个字符串,用于标识互联网上的资源。它的格式通常为 protocol://hostname:port/path?query#fragment,其中:

  • protocol:表示使用的协议,常见的有 httphttpsftp 等;
  • 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(Uniform Resource Identifier)

URI(统一资源标识符)是一种通用的标识符,它用于标识任何类型的资源,不仅仅局限于 Web 资源。URI 和 URL 有相似之处,但是它们之间也存在差异。URI 的格式可以类比 URL,但是其中的格式元素可以更为广泛,包括:

  • scheme:URI 的方案名称,例如 httpftp 等;
  • authority:URI 的授权区域,包括主机名、端口号等;
  • path:资源的路径;
  • query:查询参数;
  • fragment:锚点。

Java 中提供了 java.net.URI 类表示 URI,它比 URL 更加通用。

以下是一个 URI 的示例:

URI uri = new URI("ftp://ftp.example.com/files/file.txt");
URN(Uniform Resource Name)

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.URLjava.net.URI 类来处理这些概念。