首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 網路程式設計核心:URL 處理與資源存取完整指南

     編輯:Java 程式設計入門

Java 網路程式設計兩大基礎場景

  1. 載入 Applet:瀏覽器解析 HTML 中的 <applet> 標籤,定位並下載遠端位元碼執行
  2. 載入圖片/資源:透過 URL 定位網路資源(圖片、檔案、資料庫查詢結果等)

這兩者核心都依賴 java.net.URL 類別實現高層級網路互動。

URL 結構解析

URL(Uniform Resource Locator,統一資源定位器)包含兩個主要部分:

protocolID:resourceName
   │           │
   │           └─ 資源名稱(主機名、路徑、連接埠、錨點等)
   └─ 協議識別符(http, ftp, file, news 等)

範例:https://java.sun.com/index.html

  • 協議:http
  • 主機名:java.sun.com
  • 檔案路徑:/index.html
  • 連接埠:預設 80(可選)
  • 錨點:如 #section1(可選)

建立 URL 物件的三種方式

1. 從絕對 URL 字串建立

URL url = new URL("https://www.example.com/path/file.html");

2. 從相對 URL 建立

相對 URL 依賴一個基底 URL,常用於 HTML 連結:

URL base = new URL("https://www.example.com/");
URL relative = new URL(base, "subpage.html");        // 同目錄下檔案
URL anchor = new URL(base, "page.html#section2");    // 錨點連結

建構子:URL(URL baseURL, String relativeURL)

3. 從元件組合建立

適合動態組合協議、主機、連接埠、路徑:

// 協議、主機、路徑
URL url1 = new URL("http", "www.example.com", "/path/file.html");

// 協議、主機、連接埠、路徑
URL url2 = new URL("http", "www.example.com", 8080, "/path/file.html");

例外處理:MalformedURLException

當 URL 格式錯誤或協議不支援時拋出,必須捕獲處理:

try {
    URL url = new URL("invalid://url");
} catch (MalformedURLException e) {
    // 處理錯誤
}

解析 URL 元件

URL 類別提供存取器方法:

方法回傳值說明
getProtocol()String協議識別符
getHost()String主機名稱
getPort()int連接埠號(未指定回傳 -1)
getFile()String檔案路徑(含查詢字串)
getRef()String錨點參考

完整解析範例

import java.net.*;

public class ParseURL {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://www.example.com:8080/path/file.html#section1");
            
            System.out.println("protocol = " + url.getProtocol());  // http
            System.out.println("host = " + url.getHost());          // www.example.com
            System.out.println("file = " + url.getFile());          // /path/file.html
            System.out.println("port = " + url.getPort());          // 8080
            System.out.println("ref = " + url.getRef());            // section1
        } catch (MalformedURLException e) {
            System.err.println("MalformedURLException: " + e);
        }
    }
}

重要注意事項:getRef() 的版本差異

在 JDK 1.0.2 以前版本,getRef() 僅對以下建構子有效:

  • URL(String absoluteURL)
  • URL(URL base, String relative)

若使用元件組合建構子 URL(String protocol, String host, String file),getRef() 會回傳 null。建議統一使用字串或相對 URL 建構方式以確保錨點正確解析。

URL 連線與資料讀取

建立 URL 物件後,可透過 openConnection() 取得 URLConnection,進而開啟輸入串流讀取資料:

URL url = new URL("https://www.example.com/data.txt");
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}
reader.close();

總結

java.net.URL 是 Java 網路程式設計的高層抽象,封裝了協議解析、連線管理、資源定位等複雜細節。掌握 URL 建立、解析、連線讀取的完整流程,是開發網路爬蟲、API 客戶端、資源下載器等應用的基礎。實務上更常搭配 HttpURLConnection 或第三方函式庫(如 OkHttp、Apache HttpClient)處理複雜 HTTP 互動場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved