程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Java的網絡知識

Java的網絡知識

編輯:JAVA編程入門知識

  1) 從網絡上加載APPLE(小應用程序)

  現在的大多數浏覽器都不約而同地對Java進行支持。在HTML語言中,在.html文件的任何的位置上有一個特殊標記。這句話就是對小應用程序的引用。小應用程序沒有受到地域的限制,它可以在本地,也可以在Internet上的任何一個地方。其位置對於用戶來講是透明的。而對於浏覽器來講,其位置在中被讀出,然後進行定位小應用程序,並運行它。如果小應用程序位於遠程計算機上,那麼浏覽器就必須小載它,然後才可運行。

  (2) 從URL加載圖像

  首先,必須先介紹URL。它表示一個通過資源定位器(Uniform Resource Locator),是網絡上某些資源的地址。Java程序可以使用一個URL來引用或連接網絡資源。如:
  如果需要從遠程加載一張圖時,Java程序必須先創建一個URL,以包含圖像的地址。
  URL是Java程序裡高級別的交互功能。

  二、URL及其使用

  URL代表通用資源定位器。將URL提供給網絡浏覽器,那麼它就可以在Internet上尋找並定位文件。在編寫Java程序時,也可以用URL在互聯網上尋找希望訪問的資源。類組java.net中包含一個名為URL的類,Java可以使用它來表示一個URL地址。
  這裡需要區別的是:URL地址表示一個Internet地址,而URL對象則指代Java程序中的類URL的一個實例。

  (1) URL的定義

  URL是一個縮寫,代表通過資源定位(Uniform Resource Locator),是對Internet資源的一個引用(一個地址)。
  URL不但可以表示網絡上的一個文件的名稱,而且可以指向網絡上的其它資源,如:數據庫查詢和命令輸出。如:
  http://java.sun.com//
  所有的URL擁有兩個主要的組成部分:
  (1) 協議辨識符;
  (2) 資源名稱。
  上面的例子中,http為協議辨識符,而//java.sun.com/為資源名稱。
  協議辨識符說明被使用來獲取資源的協議的名稱。示例使用超文本傳輸協議(HTTP),它用在超文本文檔服務中使用。HTTP只是被用來訪問網上不同類型資源的多種不同協議之一。其它的協議還包括文件傳輸協議(FTP)、gopher、文件(file)和新聞(news)。
  資源名稱是資源的完整地址。資源名稱的格式完全依賴於使用的協議,但對於大多數格式而言,資源名稱包括下面組件的一種或多種:
  (1) 宿主名稱:資源所處的機器的名稱。
  (2) 文件名:機器上文件的路徑。
  (3) 端口號:連接的端口號(一般為可選項)。
  (4) 引用:對於資源內部一個有名連接(anchor)的一個引用;它常常指代一個文件內的特定位置(一般為可選項)。
  大多數情況下,宿主名稱和文件名是必須的,而端口號以及引用則是可選的。上面的示例中java.sun.com為宿主名稱,冒號後的第一個斜線’/’是文件/index.html的簡寫。
  在構建任何URL的時候,都應該將協議辨識符放在首位,後面緊跟冒號’:’,然後才是資源名稱,即:
  protocolID:resourceName
  在類組java.net中包含一個類URL,Java程序使用它代表一個URL地址。Java程序可以構造一個URL對象,打開對它的一個連接,然後在這個連接中讀入和寫出。

  三、創建一個URL

  在Java程序中,可以創建一個URL對象以表示一個URL地址。URL對象總是指向一個絕對的URL,但它可以由一個絕對的URL、一個相對的URL或URL組件構造而來。
  創建一個URL對象的最簡單的方法就是從一個表示URL地址的“可閱讀”形式的字符串創建。
  在Java中,可以使用上述文字的字符串創建一個URL對象:
  URL gamelan=new URL(http://www.linuxaid.com.cn/)
  這種方法創建的URL對象表示一個絕對的URL。一個絕對的URL包含了到達資源所需的所有信息。另外,還可以由一個相對的URL地址創建URL對象。

  (1) 相對URL

  一個相對URL只包含到達對於另一個URL(或處於另一個URL上下文之中)的資源的足夠信息。
  在HTML文件中常常使用相對的URL指定資源的位置。如有兩個文件1.html、2.html和3.html,並且它們在同一個目錄下面,那麼在1.html中如果需要調用2.html和3.html則必須寫入:
  My Story
  Picture of My Pets
  這些URL均為相對的URL,即:這些URL相對於包含它們的文件1.html。
  在Java中中,可以由一個相對的URL指定創建一個URL對象。例如,假設程序已經為http://www.linuxaid.com.cn/創建了一個URL對象,而且已經知道該站點的一個文件的名稱為linuxaid.animation.html,則就可以在初始的linuxaid URL上下文中,通過簡單地指定文件名,為linuxaid站點的這個文件創建URL:
  URL linuxaid = new URL(http://www.javaworld.com/);
  URL linuxaidanimation = new URL(linuxaid,”linuxaid.animation.html”);
  上面的代碼使用用了類URL的另一種形式的構造過程,它允許你由一個URL對象(基本URL)和一個相對的URL創建一個對象。
  這個構造過程也可以用來創建對一個文件中的有名連接(引用)的URL對象。例如,假設文件“linuxaid.animation.html”中包含一個有名連接BOTTOM,它在文件的底部,
  則可以使用相對URL構造過程創建一個URL對象(在下面的語句中BOTTOM前的字符#是必須的):
  URL linuxaidAnimationBottom=new URL(linuxaid,”#BOTTOM”);
  這種URL構造過程的一般形式為:
  URL(URL baseURL,String relativeURL)
  其中,第一個參數是一個URL對象,指定新的URL的基址,第二個參數為一個String對象,是對相對於基址的資源名稱的描述。如果baseURL為null,那麼這個構造過程就將relativeURL視為一個絕對的URL指定。但如果relativeURL是一個絕對的URL指定,那麼構造過程將忽略baseURL。

  (2)其它的URL構造過程

  除前面介紹的類URL的構造過程外,類URL還提供了另外兩個構造過程。當你使用URL的時候,例如HTTP的URL,它的資源名稱部分包含宿主名稱、文件名稱、端口號和
  引用等組件,這些構造過程就很有用了。如果不清楚包含完整URL的String對象,只要知道URL的不同組件,使用這兩個構造過程就顯得非常方便。
  如果需要設計一個網絡程序,讓用戶使用鼠標選擇協議、宿主名稱、端口號和文件名,則可以由這些組件構造一個URL。類URL提供了用協議、宿主名稱和文件名創建一個URL的構造過程。下面的代碼就創建了一個指向linuxaid站點的linuxaid.animation.html文件的URL:
  URL linuxaid = new URL(“http”,”www.linuxaid.com.cn”,”/linuxaid.animation.html”);
  該語句和URL linuxaid=URL(http://www.linuxaid.com.cn/linuxaid.animation.html);是等價的。其中,第一個參數為協議,第二個參數為宿主名稱,最後一個為文件的路徑名。
  注意,文件名的開頭為一個斜線’/’,說明文件名相對於宿主的根目錄。
  類URL的另一個構造過程還在參數列表中添加了端口號,例如:
  URL linuxaid = new URL(“http”,www.linuxaid.com,80,”/linuxaid.animation.html”);
  其中,80是端口號,別的參數同前。該語句創建了如下的一個URL對象:
  http://www.linunaid.com.cn:80/linunxaid.animation.html
  如果使用這些過程創建一個URL對象,就可以通過使用URL的過程toString()或過程toExternalForm()得到一個包含完整URL地址的String對象。

  (2) 異常MalformedURLException

  在類URL的構造過程的兩個版本中,當傳遞給它們的參數指向一個空的或不知道的協議時,它們都拋出一個MalformedURLException異常。如果希望捕捉和處理這個異常,只要將URL的構造過程語句放在一個try/catch中即可。例如:
  try{
  URL url=new URL(….);
  }catch (MalformedURLException e){
  //異常處理代碼
  }

  四、分析一個URL

  類URL提供一些查詢URL對象的過程,可以用它們獲取一個有效的URL對象所包含的協議、宿主名稱、端口號和文件名。下面是這些過程的功能描述:
  (1) getProtocol( ),返回URL的協議辨識符組件。
  (2) getHost(),返回URL的宿主名稱組件。
  (3) getPort(),返回URL的端口號組件;如果端口沒有設置,返回-1;
  (4) getFile(),返回URL的文件名組件。
  (5) getRef(),返回URL的引用組件。
  請注意;並非所有的URL地址都包含這些組件。類URL提供這些過程的原因是HTTP URL包含這些組件,而且它們可能是最常使用的URL。類URL在某種程序是以HTTP為中心的。
  可以使用這些getXXX()過程獲取關於URL的信息,它們與創建URL對象的構造過程無關。
  下面給出一個示例程序ParseURL,它由一個指定URL的字符串創建了一個URL對象,然後使用URL對象的存取過程分析URL;
  import java.net.*;
  class ParseURL{
  public static void main(String[] args){
  URL url = null;
  try{
  url = new URL(http://www.ncsa.uiuc.edu:8080/demoweb/urlprimer.html#INSTALL);
  System.out.println(“protocol = “+ url.getProtocol());
  System.out.println(“host =”+url.getHost());
  System.out.println(“filename =”+url.getFile());
  System.out.println(“port=”+url.getPort());
  System.out.println(“ref=”+url.getRef());
  }catch (MalformedURLException e){
  System.err.println(“MalformedURLException:”+e);
  }
  }
  }
  下面是程序執行的結果:
  protocol=http
  host=www.ncsa.uinc.edu
  filename=/demoweb/url-primer.html
  port=8080
  ref=INSTALL
  使用過程getRef()應當注意:在JDK1.02以前的版本中,過程getRef()僅對以下兩個構造過程創建的URL有效:
  URL(String absoluteURLSpecification);
  URL (URL baseURL,String relativeURLSpecification);
  例如,假設你使用下面的語句創建了一個URL:
  URL linuxaid=new URL(“http://www.linuxaid.com.cn/”);
  URL linuxaidAnimationBottom=new URL(gamelan,”linuxaid.animation.html#BOTTOM”);
  當你對linuxaidAnimationBottom調用過程getRef()時,它正確地返回”BOTTOM”。但你如果使用下面的語句創建一個指向同一資源的URL:
  URL linuxaidAnimationBottom = new URL(“http”,”www.linuxaid.com.cn”,”linuxaid.animation.html#BOTTOM”);
  當調用過程getRef()從上面語句所創建的linuxaidAnimationbottom中獲取信息時,getRef()返回null,而不能返回正確值“BOTTOM”。

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved