1. 程式人生 > >Java基礎鞏固——網路程式設計基礎 URL

Java基礎鞏固——網路程式設計基礎 URL

此教程總結是根據JDK 8編寫的

什麼是URL?

URL是統一資源定位器的首字母縮寫。它是Internet上資源的引用(地址)

URL有兩個主要元件:

  • 協議識別符號:對於URL http://example.com,協議識別符號為http
  • 資源名稱:對於URL http://example.com,資源名稱為example.com

 

資源名是資源的完整地址。資源名稱的格式完全取決於所使用的協議,但對於大多數協議(包括HTTP協議),資源名稱包含以下一個或多個元件:

主機名 資源所在機器的名稱。
檔名 計算機上檔案的路徑名。
埠號

要連線的埠號(通常是可選的)。 

Reference 對資源中已命名錨的引用,它通常標識檔案中的特定位置(通常是可選的)。

建立URL

建立URL物件的最簡單方法是使用String,該String表示URL地址的人類可讀形式。這通常是其他人用於URL的表單。在Java程式中,您可以使用包含此文字的String來建立URL物件:

URL myURL = new URL("http://example.com/");

上面建立的URL物件表示絕對路徑的URL。絕對路徑的URL包含到達相關資源所需的所有資訊。您還可以從相對路徑的URL地址建立URL物件。

建立相對路徑URL

相對URL規範通常在HTML檔案中使用,例如:

<a href="PicturesOfMe.html">Pictures of Me</a>
<a href="MyKids.html">Pictures of My Kids</a>

其中  href="PicturesOfMe.html"  指向了相對路徑的PicturesOfMe.html檔案

我們可是使用絕對路徑URL建立相對路徑的URL:http://example.com/pages/,如下所示:

URL myURL = new URL("http://example.com/pages/");
//page1URL生成的URL相當於http://example.com/pages/page1.html
URL page1URL = new URL(myURL, "page1.html");
//page2URL生成的URL相當於http://example.com/pages/page2.html
URL page2URL = new URL(myURL, "page2.html");

對此示例中的特殊字元進行編碼很容易,因為只有一個字元需要編碼,但對於具有多個這些字元的URL地址,或者如果您不確定在編寫程式碼時需要訪問哪些URL地址,您可以使用java.net.URI類的多引數建構函式自動為您處理編碼。

URI uri = new URI("http", "example.com", "/hello world/", "");

然後將URI轉換為URL。

URL url = uri.toURL();

如果建構函式的引數引用null或未知協議,則四個URL建構函式中的每一個都會丟擲MalformedURLException。我們可以通過在try / catch對中嵌入URL建構函式語句來捕獲和處理此異常,如下所示:

try {
    URL myURL = new URL(...);
} 
catch (MalformedURLException e) {
    // exception handler code here
    // ...
}

注意: 

URLs是所有的資訊都是“一次寫入”物件的屬性中。一旦建立了URL物件,就無法更改其任何屬性(協議,主機名,檔名或埠號)。

 

解析URL

URL類提供了一些方法,可以讓你查詢URL的物件。您可以使用以下訪問器方法從URL獲取協議,許可權,主機名,埠號,路徑,查詢,檔名和引用:

getProtocol

返回URL的協議識別符號元件。

getAuthority

返回URL的許可權元件。

getHost

返回URL的主機名元件。

getPort

返回URL的埠號元件。該getPort方法返回一個整數,即埠號。如果未設定埠,則getPort返回-1。

getPath

返回此URL的路徑元件。

getQuery

返回此URL的查詢元件。

getFile

返回URL的檔名元件。該getFile方法返回相同getPath的值,加上值的串聯(getQuery如果有的話)。

getRef

返回URL的引用元件。