Java URL和URN的区别
现代互联网主要建立在拥有数十亿个网站和资源的万维网上。通过遵循协议,有多种方式可以访问这些基于网络的资源。Java具有网络概念,用于在客户端和这些资源之间建立通信。但是,为了在数以百万计的资源中定位特定资源,我们需要一个唯一标识符。有三个组成部分:URI、URL和URN可以帮助我们在网络上定位特定资源。在本文中,我们将指出URL和URN在Java中的一些区别。
URL与URN在Java中的区别
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’网站。
在此示例中:
- ‘https://’ 是使用的协议。
-
example.com 是域名。
-
/login 是服务器上的路径或终点。
-
**?username=User123 &password=MyPasswrd **表示查询字符串。
URN
URN是Uniform Resource Name的缩写,定义了某个资源的名称。换句话说,URN是一种特定类型的URI,通过其名称而非位置来标识资源。它具有urn的方案和namespace标识符,如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://www.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指定资源的名称或身份。