二級Java考試輔導教程:8.2基于URL的高層次Java網(wǎng)絡(luò)編程

字號:

8.2 基于URL的高層次Java網(wǎng)絡(luò)編程
    8.2.1一致資源定位器URL
    URL(Uniform Resource Locator)是一致資源定位器的簡稱,它表示Internet上某一資源的地址。通過URL我們可以訪問Internet上的各種網(wǎng)絡(luò)資源,比如最常見的WWW,F(xiàn)TP站點。瀏覽器通過解析給定的URL可以在網(wǎng)絡(luò)上查找相應(yīng)的文件或其他資源。
    URL是最為直觀的一種網(wǎng)絡(luò)定位方法。使用URL符合人們的語言習慣,容易記憶,所以應(yīng)用十分廣泛。而且在目前使用最為廣泛的TCP/IP中對于URL中主機名的解析也是協(xié)議的一個標準,即所謂的域名解析服務(wù)。使用URL進行網(wǎng)絡(luò)編程,不需要對協(xié)議本身有太多的了解,功能也比較弱,相對而言是比較簡單的,所以在這里我們先介紹在Java中如何使用URL進行網(wǎng)絡(luò)編程來引導讀者入門。
    8.2.2 URL的組成
    protocol://resourceName
    協(xié)議名(protocol)指明獲取資源所使用的傳輸協(xié)議,如http、ftp、gopher、file等,資源名(resourceName)則應(yīng)該是資源的完整地址,包括主機名、端口號、文件名或文件內(nèi)部的一個引用。例如:
    http://www.sun.com/ 協(xié)議名://主機名
    http://home.netscape.com/home/welcome.html 協(xié)議名://機器名+文件名
    http://www.gamelan.com:80/Gamelan/network.html#BOTTOM 協(xié)議名://機器名+端口號+文件名+內(nèi)部引用
    端口號是和Socket編程相關(guān)的一個概念,初學者不必在此深究,在后面會有詳細講解。內(nèi)部引用是HTML中的標記,有興趣的讀者可以參考有關(guān)HTML的書籍。
    8.2.3 創(chuàng)建一個URL
    為了表示URL, java.net中實現(xiàn)了類URL。我們可以通過下面的構(gòu)造方法來初始化一個URL對象:
    (1) public URL (String spec);
    通過一個表示URL地址的字符串可以構(gòu)造一個URL對象。
    URL urlBase=new URL("http://www. 263.net/")
    (2) public URL(URL context, String spec);
    通過基URL和相對URL構(gòu)造一個URL對象。
    URL net263=new URL ("http://www.263.net/");
    URL index263=new URL(net263, "index.html")
    (3) public URL(String protocol, String host, String file);
    new URL("http", "www.gamelan.com", "/pages/Gamelan.net. html");
    (4) public URL(String protocol, String host, int port, String file);
    URL gamelan=new URL("http", "www.gamelan.com", 80, "Pages/Gamelan.network.html");
    注意:類URL的構(gòu)造方法都聲明拋棄非運行時例外(MalformedURLException),因此生成URL對象時,我們必須要對這一例外進行處理,通常是用try-catch語句進行捕獲。格式如下:
    try{
    URL myURL= new URL(…)
    }catch (MalformedURLException e){
    …
    //exception handler code here
    …
    }
    8.2.4 解析一個URL
    一個URL對象生成后,其屬性是不能被改變的,但是我們可以通過類URL所提供的方法來獲取這些屬性:
    public String getProtocol() 獲取該URL的協(xié)議名。
    public String getHost() 獲取該URL的主機名。
    public int getPort() 獲取該URL的端口號,如果沒有設(shè)置端口,返回-1。
    public String getFile() 獲取該URL的文件名。
    public String getRef() 獲取該URL在文件中的相對位置。
    public String getQuery() 獲取該URL的查詢信息。
    public String getPath() 獲取該URL的路徑
    public String getAuthority() 獲取該URL的權(quán)限信息
    public String getUserInfo() 獲得使用者的信息
    public String getRef() 獲得該URL的錨
    下面的例子中,我們生成一個URL對象,并獲取它的各個屬性。
    import java.net.*;
    import java.io.*;
    public class ParseURL{
    public static void main (String [] args) throws Exception{
    URL Aurl=new URL("http://pic02.newdu.com/uploads/202503/19/er=2218861402 tuto=new URL(Aurl,"tutorial.intro.html#DOWNLOADING");
    System.out.println("protocol="+ tuto.getProtocol());
    System.out.println("host ="+ tuto.getHost());
    System.out.println("filename="+ tuto.getFile());
    System.out.println("port="+ tuto.getPort());
    System.out.println("ref="+tuto.getRef());
    System.out.println("query="+tuto.getQuery());
    System.out.println("path="+tuto.getPath());
    System.out.println("UserInfo="+tuto.getUserInfo());
    System.out.println("Authority="+tuto.getAuthority());
    }
    }