2010年8月28日 星期六

Java 網路程式 - URL

在 Java 程式裡一切有關網路方面的類別都包含在 java.net 裡面
對於一般我們看到的網址即是 URL,對於 Java 來說可以透過 URL 類別將網址以字串來建立一個物件。

URL sun = new URL("http://java.sun.com");

以上的 http://java.sun.com 我們可以稱之為 "絕對URL",如果要建立"相對URL",說明如下:

譬如今天你寫了一張網頁 MyPage.html,如果在這網頁裡有一些連結可以前往其他頁面
這些頁面都是和 MyPage.html 在相同的主機以及相同的目錄之下
如:MyAlbum.html 和 MyHomework.html(如下)


<a href="MyAlbum.html">我的相簿</a>
<a href="MyHomework.html">我的作業</a>

以上的 URL 即是相對URL,以下例子:

http://www.music.com/page/index1.html
http://www.music.com/page/index2.html

則 Java 的 URL 建構子可以寫成:

URL music = new URL("http://www.music.com/page/");
URL gamelanGames = new URL(music, "index1.html");
URL gamelanNetwork = new URL(music, "index2.html");

至於 URL 還有一些覆載的建構子

譬如:URL music = new URL("http://www.music.com/page/index1.html");

格式:new URL("協定", "主機名稱", "檔案名稱");

可以寫成:URL music = new URL("http","www.music.com","/page/index1.html");

下面寫了一隻程式來說明一些關於 URL 類別的方法,程式如下:

import java.net.*;
public class URLTest 
{
    public static void main(String[] args)
    {
        for(int i=0;i<args.length;i++)
        {
            try{
                URL url = new URL(args[i]);
                System.out.println("輸入的URL為: " + url);  
                //getProtocol() 回傳 URL 的協定
                System.out.println("getProtocol的結果: " + url.getProtocol());
                //getHost() 回傳 URL 的主機名稱
                String host = url.getHost();
    
                if(host != null)
                {
                    System.out.println("主機: " + host);
                }
                else
                {
                    System.out.println("主機名稱為空值");
                }
                //getPort() 回傳 URL 的 port number
                System.out.println("getPort值: " + url.getPort());
                //getPort() 回傳 URL 的 檔案名稱
                System.out.println("getFile值: " + url.getFile());
                //getPort() 回傳 URL 的 路徑
                System.out.println("getPath值: " + url.getPath());
            }
            catch(MalformedURLException e)
            {
                System.out.println(args[i] + "請輸入正確的URL格式");
            }
            System.out.println();
        }
    }
}

沒有留言:

張貼留言