JAVA的網路功能與編程 二

來源:互聯網
上載者:User
編程|網路     五、顯示網路上其他HTML文檔



    利用Java提供的getAppletContext().showDocument(URL)可以

顯示其他結點的HTML文檔,同前面的顯示網路上其他結點的圖象,

有兩種格式,下面各舉一例:

                      ●程式8   格式一

import java.applet.*;

import java.awt.*;

import java.net.*;

public class showdoc extends Applet

{    

    URL docur= null;

    public void paint(Graphics g) {

      try {

            docur=new URL("http://www.shu.edu.cn/~xyx/doc/manhua.html");        

      }

      catch (MalformedURLException e) {

                System.out.println("Can't open the URL ");

      }

      if (docur != null) {

                    getAppletContext().showDocument(docur,"_blank");

      }   

    }

}



                          ●程式9 格式二

import java.applet.*;

import java.awt.*;

import java.net.*;

public class showdoc2 extends Applet

{    

   URL docur= null;

   public void paint(Graphics g) {

      try {

getAppletContext().showDocument(new URL("http://www.shu.edu.cn/

~xyx/doc/manhua.html"));       

      }

      catch (MalformedURLException e) {

                System.out.println("Can't open the URL ");

      }   

   }

}



     六、讀取網路上檔案內容



     前述的網路功能只是顯示或播放網路上結點的圖象、 聲音及

HTML文檔,並沒有對其內容進行處理。事實上,Java還可讀取網路

上檔案的內容,並對其內容進行處理。

    讀取網路上檔案內容的步驟可如下:

    1. 建立一個URL類型的對象

    如:

    String url = "ftp://202.120.127.218/incoming/test/readtxt.html";

URL fileur;

        try {

fileur = new URL(url); }

        catch ( MalformedURLException e) {

               System.out.println("Can't get URL: " );

        }

    2. 利用URL類的openStream(),獲得對應的InputStream類的對象

    如:

InputStream filecon = fileur.openStream();

    3. 將InputStream對象轉化為DataInputStream類的對象

    如:

    DataInputStream filedata = new DataInputStream(filecon);

    4. 讀取內容

    如對前面的filedata,可用filedata.readLine() 一行一行讀

取內容,或用filedata.readchar一個字元一個字元讀取內容。 對

讀取到的內容,可由Java Applet進行各種處理, 並將處理結果用

各種方式顯示出來。

    下面的例子是讀取 http://www.shu.edu.cn/~xyx/doc/manhua.html

檔案內容的例子,為簡潔起見,該例中只將檔案的內容逐行讀出,

並在文本區顯示出來。

●程式10

import java.io.*;

import java.net.*;

import java.awt.*;

import java.applet.*;

public class showfile extends Applet{

     URL fileur;

     TextArea showarea = new TextArea("Please wait a while for get

text",10,70);

     public void init() {

        String url = "http://www.shu.edu.cn/~xyx/doc/manhua.html";

        try { fileur = new URL(url); }

        catch ( MalformedURLException e) {

               System.out.println("Can't get URL: " );

        }

        add(showarea);

}



    public void paint(Graphics g) {

        InputStream filecon = null;

        DataInputStream filedata = null;

        String fileline;

try {

                filecon = fileur.openStream();

                filedata = new DataInputStream(filecon);

                while ((fileline = filedata.readLine()) != null) {

                        showarea.appendText(fileline+"\n");

}

}

catch (IOException e) {

                System.out.println("Error in I/O:" + e.getMessage());

}

   }

}



    七、動態使用網路上資源

    在前面介紹的例子的基礎上,可以動態地利用網路上的資源。

其方法是編製一個線程,每隔一定時間自動到相應結點讀取最新的

內容。本文對線程的編製不再展開,讀者可參考有關文章或直接套

用下面的例子。

    例如對上例中讀取http://www.shu.edu.cn/~xyx/doc/manhua

.html檔案內容的例子,加入線程後如下所示。該例子每隔5秒更新

一次資料。如果http://www.shu.edu.cn/~xyx/doc/manhua.html中

存放的是一些變化較快的資訊如股市行情等,並有程式隨時動態地

更新其內容,則在Web中加入這種Java Applet,可以讓流覽者得到

動態資訊。進一步,也可以在程式中對資料進行處理,並用圖形

方式顯示處理結果。例如將各時刻的資料繪製成曲線,流覽者可以

看到動態變化的曲線。

//程式11

import java.io.*;

import java.net.*;

import java.awt.*;

import java.applet.*;

public class dynashow extends java.applet.Applet

    implements Runnable {

    Thread dthread;

    URL fileur;

TextArea showarea = new TextArea("Wait for a while...",10,70);

     public void init() {

        String url = " http://www.shu.edu.cn/~xyx/doc/manhua.html ";

        try { fileur = new URL(url); }

        catch ( MalformedURLException e) {

               System.out.println("Can't get URL: " );

        }

        add(showarea);

     }



     public void start() {

        if (dthread == null)

        {

                dthread = new Thread(this);

                dthread.start();

        }

    }

    public void stop() {

        if (dthread != null) {

                dthread.stop();

                dthread = null;

        }

    }



    public void run() {

        InputStream filecon = null;

        DataInputStream filedata = null;

        String fileline;

        while(true){

            try {

                filecon = fileur.openStream();

                filedata = new DataInputStream(filecon);

                while ((fileline = filedata.readLine()) != null) {

                        showarea.appendText(fileline+"\n");

        }

            }

           catch (IOException e) {

                System.out.println("Error in I/O:" + e.getMessage());

           }

           try{

                dthread.sleep(5000);

           }

           catch (InterruptedException e){}

           repaint();

       }

     }

}



    八、Java網路能力的限制



    出於安全性考慮,在用netscape瀏覽時,Java Applet 只能和

其所在的主機建立串連,因此,前面的程式編譯後大部分只能存放

在http://www.shu.edu.cn/~xyx對應的主機上。存放到其他主機時

需更改程式中的結點地址。否則瀏覽器將顯示安全出錯。

    但對顯示網路上其他HTML文檔沒有此限制(如程式8、9),讀

者可以將程式編譯後放到任意WWW伺服器或FTP伺服器,均可正常運

行。

    此外,當瀏覽器從本地碟開啟調用Java Applet的HTML文檔時,

也不受此限制。因此,本文所有的程式都可存放在本地碟編譯,只

要用netscape的File/Open File菜單開啟,便可正確運行。

    對於另一種Java程式--Java Application,也無此限制,例

如對於讀取網路上檔案內容的程式10,對應的Java Application可

作如下編程:



●程式11

import java.io.*;

import java.net.*;

import java.awt.*;

class showfile2 {

     public static void main(String args[]){

        InputStream filecon = null;

        DataInputStream filedata = null;

        String fileline;

        String url = "http://www.shu.edu.cn/~xyx/doc/manhua.html";

        URL fileur;

        try {

   fileur = new URL(url);

                filecon = fileur.openStream();

                filedata = new DataInputStream(filecon);

                while ((fileline = filedata.readLine()) != null) {

System.out.println(fileline+"\n");

}

}

catch (IOException e) {

                System.out.println("Error in I/O:" + e.getMessage());

}

  }

}

    將其以showfile2.java存檔,用javac showfile2.java編譯後,

只需執行“java showfile2”便可以在螢幕上列印出

http://www.shu.edu.cn/~xyx/doc/manhua.html 檔案的內容。



    九、建立URL對象的方法



    在前面的例子中我們統一使用new URL(url字串)的形式建立

URL對象。其實,Java提供了四種建立URL對象的形式:

    1.new URL(url字串)    本文中的程式均採用此種格式,如:

new  URL("http://www.shu.edu.cn/~xyx/doc/manhua.html")

    2.new URL(協議,主機名稱,檔案名稱或路徑)    如程式2中的

String  url = "http://www.shu.edu.cn/~xyx/img/shnet.jpg";

image = getImage(new URL(url));部分可改為:

image = getImage(new URL("http","www.shu.edu.cn","/~xyx /img/shnet.jpg"));

    3.new URL(協議,主機名稱,連接埠號碼,檔案名稱或路徑)1

如:new URL("http","www.shu.edu.cn",80, "/~xyx/doc/manhua.html")

    4.new URL(基準url,檔案名稱或路徑)



    十、實現網路功能的其他方法



    以上著重介紹了利用Java的URL類實現從網路上擷取聲音、 圖

象、HTML文檔及檔案資料的編程方法。Java的網路功能很強大,除

上面介紹的外,還可以利用URLconnection 類實現更廣泛的網路功

能,如向WWW 服務器上的 CGI 程式發送資訊等; 通過 Socket 及

ServerSocket類,可以自己編寫客戶軟體及服務軟體,並可以自己

設計通訊協議。



〖參考文獻〗

Laura Lemay,Charles L. Perkins  "Teach Yourself JAVA in 21 Days"

摘自《Internet世界》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.