Java URL, URI 和 URN的区别

Java URL, URI 和 URN的区别

现代互联网的核心是万维网,其中包含数十亿个网站和资源。通过遵循协议,有多种方式可以访问这些基于Web的资源。Java具有网络概念,用于建立客户端与资源之间的通信。但是,为了在数百万个可用资源中定位特定资源,我们需要一个唯一标识符。有三个组件:URI、URL和URN可以帮助我们在Web上定位特定资源。尽管它们共同服务于一个目的,但本文将讨论URI、URL和URN之间的区别。

Java中URI vs URL vs URN的区别

URI

URI是Uniform Resource Identifier的缩写。它包括一系列字符,用于标识Web上的资源。它定义了一种方案,例如http、ftp、mailto等,指定如何访问资源。URI允许在同一上下文中使用多种资源标识符,而不考虑访问这些资源所使用的方法的差异。Java提供了‘java.net’包中的URI类。

语法

URI nameOfObject = new URI( "URIspecifier" );  

这里,URIspecifier是实际的URI或者可以说是资源的链接。

示例

https://example.com/resource?id=12345&category=books

在上面的示例URI中,我们有一个假设的域名示例.com,后面是资源路径/resource。它还包括两个查询参数,一个名称为id,值为12345;另一个名称为category,值为books。

URL

URL的全称是统一资源定位符。它提供了在互联网上通过给定资源的地址定位和访问资源的功能。URL由四个组成部分组成:

  • 协议

  • 主机名或IP地址

  • 端口号

  • 路径

Java网络中的URL类用于通过URL定位资源或在互联网上进行连接。该类会抛出MalformedURLException异常。

语法

URL nameOfObject = new URL( "URLspecifier" );  

在此处 URLspecifier 是资源的实际URL或链接。必须用双引号括起来。

示例

https://example.com/login?username=User123&password=MyPasswrd

上述示例URL表明用户正在尝试使用用户名’User123’和密码’MyPasswrd’登录’example.com’网站。

URN

它是Uniform Resource Name的首字母缩写。它定义了某个资源的名称。换句话说,URN是一种特定类型的URI,它通过名称而不是位置来标识资源。它具有urn方案和命名空间标识符(如isbn和uuid),用于指定资源的命名权威机构。由于在互联网上没有一个通用的命名对象的标准,这种资源标识方法失败了。

示例

urn:example:resource:books:12345

在上面的示例中,我们使用了’example’命名空间,后面跟着资源标识符’resource:books:12345’。URN格式由由冒号分隔的不同组件组成的分层结构。

方法

  • 首先,定义一个URI类的实例,并将文件的链接传递给它的构造函数。

  • 然后,使用URI对象定义URL类的实例,以便我们可以连接到给定的链接。

  • 现在,使用getScheme()方法检索链接中使用的协议的名称。

  • 最后,使用内置的getContentType()方法确定给定文件的类型。

示例

以下示例演示了在Java程序中使用URI和URL的实际实现。

import java.net.*;
public class URIExample {
   public static void main(String args[]) throws Exception {
      try {
         // link of file
         URI uri = new URI("https://www.tutorialspoint.com/java/pdf/java_networking.pdf");
         // creating URL object from the URI
         URL url = uri.toURL();
         // making connection with the file
         URLConnection urlConn = url.openConnection();
         // retrieving the name of protocol
         String scheme = uri.getScheme();
         System.out.println("The name of protocol is: " + scheme);
         // retrieving type of the file
         System.out.println("Type of the content: " + urlConn.getContentType());
      }
      catch(Exception exp) {
         System.out.println("Something went wrong!! Please check the link!!");
      }
   }
}

输出

The name of protocol is: https
Type of the content: null

URI、URL和URN的区别

URI URL URN
它可以定位并访问在互联网上可用的资源。 它也可以定位并检索互联网上的资源。 它只能命名一个资源。
如果相应的资源被修改,URI 可以更新。 如果相应的资源被修改,URL 也可以更新。 它是持久的,不依赖于资源的位置或名称。
URI 由 URN 和 URL 组成。 URL 是 URI 的子集。 URN 是 URI 的子集。

结论

在本文中,我们解释了在Web上定位可用资源时使用的组件。这些组件是URI、URL和URN。 URI是URN和URL的超集。它可以通过名称、位置或两者来标识资源。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程