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.tw/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指定資源的名稱或標識。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP