Java Applet與瀏覽器間的通訊技術

來源:互聯網
上載者:User

摘  要:本文研究了Java Applet程式與互連網瀏覽器之間的通訊技術,重點闡明了getParameter()、showStatus()以及showDocument()等方法的提示。

關鍵字:Java Applet,瀏覽器,通訊

 

在應用Java技術進行軟體開發時,通常都會遇到Java Applet程式與互連網瀏覽器之間的通訊的問題。在java.applet包中的Applet類裡提供了許多方法,使之可以與瀏覽器進行通訊,包括getCodeBase()、getDocumentBase()、getParameter()、getParameterInfo()、showStatus()、getAppletInfo()等方法。另外,還有java.applet包中的的AppletContext類裡的showDocument()方法。

本文重點討論getParameter()、showStatus()和showDocument()的用法和技巧。

一、getParameter()方法

Java Application通過命令列接受使用者參數,在Applet中,這個任務是通過HTML檔案的另一個專門標記<PARAM>來完成的。從下面的例子中可以看出它的使用方法:

<HTML>

<BODY>

<APPLET code="AppletParam.class" height=60 Width=300>

<PARAM name=varname value="Liu">

<PARAM name=varnum value=30>

</APPLET>

</BODY>

</HTML>

這個HTML檔案中嵌入了一個名為AppletParam的Applet,同時在Applet運行時將向它傳遞兩個字串參數:一個參數名為varname,取值為“Liu”;另一個參數名為varnum,取值為30。可見每個<PARAM>標記都只能傳遞一個字元類型的參數,這個參數的名字用來把它和其他參數區分開來,用name指定,這個參數的參數值用value指定。

Applet利用getParameter()方法來擷取HTML傳遞來的參數。這個方法的格式為:

String getParameter(String name);

該方法的功能是返回HTML中設定的值。字串參數表示它所希望擷取的HTML參數的名字(即name指定的參數名)。方法的傳回值是一個字串對象,即HTML檔案中value指定的字串,如果希望這個參數是其他類型,還要進行參數類型的轉換。在處理Applet參數時,通常要給出預設值,以防止使用者未給出該參數或給出非法參數值而使程式無法執行。

下面是ApplerParam.java的原始碼,注意觀察Applet如何從HTML檔案中擷取參數。

import java.applet.Applet;</p><p>import java.awt.Graphics;</p><p>public class AppletParam extends Applet{ //定義主類</p><p>private String name; //用於接收HTML參數的程式變數</p><p>private int num;</p><p>public void init(){</p><p> name=getParameter("varname"); //接收HMTL中傳遞的參數</p><p> num=Integer.parseInt(getParameter("varnum"));</p><p> }</p><p>public void paint(Graphics g){</p><p> g.drawString("Hello "+name+" ! Your are "+num+" years old.",10,20);</p><p> }</p><p>}</p><p>

二、showStatus()方法

Applet可以通過顯示簡短的狀態串,報告Applet的運行情況,狀態串顯示在瀏覽器或Appletviewer視窗的底部。在瀏覽器中,一個Web頁上的所有Applet與瀏覽器本身共用同一狀態顯示域。Applet顯示狀態串使用showStatus()方法,showStatus()方法就是用來在瀏覽器的狀態條顯示資訊。這個方法的格式為:

void showStatus(String msg);

下面的例子說明了如何使用showStatus()方法,該程式的功能是單擊按鈕button,將文字框txt裡的文字顯示在瀏覽器的狀態條中。

import java.awt.*;</p><p>import java.awt.event.*;</p><p>import java.applet.*;</p><p>public class UIApplet extends Applet implements ActionListener{</p><p>TextField txt;</p><p>Button button;</p><p>public void init(){</p><p> txt=new TextField(10);</p><p> add(txt); //填加文本域組件</p><p> button=new Button("Show");</p><p> button.addActionListener(this);</p><p> add(button); //填加按鈕組件</p><p>}</p><p>public void actionPerformed(ActionEvent e){//響應按鈕事件的事件處理方法</p><p> showStatus(txt.getText()); //將文本域內容顯示在狀態行</p><p> }</p><p>}</p><p> 通常這一資訊只是暫時性的,所以不應該用於顯示重要的資訊或用於調試。由於狀態顯示域位置不突出,並且隨時可能被瀏覽器或其他Applet重寫,因而狀態串通常只應是一些不常用的輔助性的資訊。對於一些至關重要的提示和警告資訊,不要作為狀態串顯示在狀態行,應該顯示在Applet地區本身或是顯示在標準輸出上。

對於重要的資訊或調試時要使用的資訊,應該使用類System把它輸出到標準輸出,在標準輸出上報告診斷資訊主要用於調試Applet。另外,當一個Applet生命週期出現了未捕獲的異常時也可以從標準輸出看到一些訊息。標準輸出的確切顯示位置不確定,它依賴於瀏覽器的實現以及對瀏覽器或Appletveiwer的用法,如果在Unix的Shell視窗使用瀏覽器,則往標準輸出上顯示的字串將輸出到shell視窗上,而在X視窗菜單使用瀏覽器,則標準輸出將打到console視窗。Netscape Navegator一般將Applet的標準輸出放到Java console視窗,該視窗由Options萊中彈出。

三、showDocument()方法

showDocument()方法是AppletContext類的方法。它可以用來請求瀏覽器顯示一個URL地址對應的HTML檔案,並且可以控制顯示在哪個瀏覽器視窗。它的格式如下:

void showDocument(URL url);

或者

void showDocument(URL url,String target);

具有一個參數形式的showDocument()指示瀏覽器在指定的URL顯示有關文檔,它沒有指出顯示文檔的視窗,指定的HTML檔案將在Applet所在的視窗中顯示。

具有兩個參數的showDocurnent()進一步指定顯示文檔的視窗,第二個參數target可以指明顯示Applet的視窗,可以取下列值:

“_self”在Applet的視窗中顯示文檔。

“_parent”在Applet視窗的父視窗中顯示文檔。若Applet是最上層視窗,效果同“_self”。

“_top”在Applet視窗的最上層視窗顯示本文檔。

“_blank”在一個新的無名視窗上顯示文檔。

“windowname”在名為windowname的視窗上顯示文檔,這一視窗可在需要時產生。

    下面的程式在當前瀏覽器視窗中顯示了煙台大學的首頁。

import java.applet.*;</p><p>import java.net.URL;</p><p>import java.net.MalformedURLException;</p><p>public class sd extends Applet{</p><p> public void init(){</p><p> String us="http://www.ytu.edu.cn"; //www.ytu.edu.cn為煙台大學首頁地址</p><p> URL u=null;</p><p> AppletContext ac=getAppletContext(); //定義AppletContext類的對象ac</p><p> try{</p><p> u=new URL(us);</p><p> }catch(MalformedURLException e){</p><p> System.err.println("Malformed URL:"+us);</p><p> }</p><p> if(u!=null){</p><p> ac.showDocument(u); //在當前瀏覽器視窗顯示煙台大學首頁</p><p> }</p><p> }</p><p>}</p><p> 如果將上面程式中的語句

ac.showDocument(u);

改為

ac.showDocument(u,"_blank");

那麼程式將保留原來的瀏覽器視窗,然後開啟一個新的瀏覽器顯示煙台大學首頁。

參考文獻

1. 劉其成等. Java語言基礎教程. 石油大學出版社,2001

2. 劉其成等. 基於Java的DHTML技術及其應用. 微型機與應用. 2000, 12

3. 劉其成等. 物件導向的柔性設計與控制理論. 電腦工程與應用. Vol 38, No.18

4. 劉其成等. 基於Java資料報通訊技術的聊天室設計與實現. 資訊技術. 2002, 8

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.