Java中URL和URN的区别
现代互联网的核心是万维网,它包含数十亿个网站和资源。通过遵循协议,有多种方法可以访问这些基于Web的资源。Java拥有用于建立客户端与这些资源之间通信的网络概念。但是,为了在数百万个可用资源中找到特定资源,我们需要一个唯一的标识符。有三个组件:URI、URL和URN,它们可以帮助我们在网上找到某个资源。在本文中,我们将指出Java中URL和URN之间的一些区别。
Java中URL与URN的比较
URL
其全称是统一资源定位符 (Uniform Resource Locator)。它提供了一种通过使用给定资源的地址来唯一定位和访问互联网上资源的功能。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”网站。
这里,
'https://' 是使用的协议。
example.com 是域名。
/login 是服务器上的路径或端点。
?username=User123&password=MyPasswrd 表示查询字符串。
URN
它是统一资源名称 (Uniform Resource Name) 的首字母缩写。它定义了某个资源的名称。换句话说,URN是一种特殊的URI,它通过名称而不是位置来标识资源。它具有urn方案和一个命名空间标识符(如isbn和uuid),该标识符指定资源的命名机构。由于互联网上对象命名缺乏通用标准,这种资源标识方法已失败。
示例
urn:example:resource:books:12345
在上面的URN示例中,我们使用了“example”命名空间,后跟资源标识符“resource:books:12345”。URN格式由分隔符为冒号的不同组件组成的分层结构组成。
示例
在下面的示例中,我们将使用“java.net”包的一些内置方法和类来检查互联网上可用文件的类型。
import java.net.*; public class FileTypes { public static void main(String args[]) throws Exception { try { // link of file URL shareLink = new URL("https://tutorialspoint.com/java/pdf/java_networking.pdf"); // making connection with the file URLConnection urlConn = shareLink.openConnection(); // 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 file type!!"); } } }
输出
Type of the content: null
在上面的代码中,我们创建了一个URL类的实例,并将文件的链接传递给它的构造函数。然后,使用内置方法getContentType()确定给定文件的类型。但是,在此之前,我们需要使用URL类的openConnection()方法与文件建立连接。
URL和URN的区别
下表显示了URL和URN之间的区别:
URL |
URN |
---|---|
可用于定位和检索互联网上的资源。 |
只能用于标识互联网上的资源。 |
如果对应的资源被修改,URL可以被更新。 |
URN是持久的,不依赖于资源的位置或名称。 |
它与任何URN都不关联。 |
它可能与一个或多个URL关联。 |
它定义了如何获取资源。 |
它只定义了某个资源的名称。 |
结论
URI是URN和URL的超集。两者具有不同的用途和语法。URL指定资源的位置和访问方法,而URN指定资源的名称或标识。