摘 要:本文研究了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;
import java.awt.Graphics;
public class AppletParam extends Applet{ //定義主類
private String name; //用於接收HTML參數的程序變量
private int num;
public void init(){
name=getParameter("varname"); //接收HMTL中傳遞的參數
num=Integer.parseInt(getParameter("varnum"));
}
public void paint(Graphics g){
g.drawString("Hello "+name+" ! Your are "+num+" years old.",10,20);
}
}
二、showStatus()方法
Applet可以通過顯示簡短的狀態串,報告Applet的運行情況,狀態串顯示在瀏覽器或Appletviewer窗口的底部。在瀏覽器中,一個Web頁上的所有Applet與瀏覽器本身共享同一狀態顯示域。Applet顯示狀態串使用showStatus()方法,showStatus()方法就是用來在瀏覽器的狀態條顯示信息。這個方法的格式為:
void showStatus(String msg);
下面的例子說明了如何使用showStatus()方法,該程序的功能是單擊按鈕button,將文本框txt裡的文字顯示在瀏覽器的狀態條中。
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class UIApplet extends Applet implements ActionListener{
TextField txt;
Button button;
public void init(){
txt=new TextField(10);
add(txt); //填加文本域組件
button=new Button("Show");
button.addActionListener(this);
add(button); //填加按鈕組件
}
public void actionPerformed(ActionEvent e){//響應按鈕事件的事件處理方法
showStatus(txt.getText()); //將文本域內容顯示在狀態行
}
}
通常這一信息只是暫時性的,所以不應該用於顯示重要的信息或用於調試。由於狀態顯示域位置不突出,並且隨時可能被瀏覽器或其他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.*;
import java.net.URL;
import java.net.MalformedURLException;
public class sd extends Applet{
public void init(){
String us="http://www.ytu.edu.cn"; //www.ytu.edu.cn為煙台大學主頁地址
URL u=null;
AppletContext ac=getAppletContext(); //定義AppletContext類的對象ac
try{
u=new URL(us);
}catch(MalformedURLException e){
System.err.println("Malformed URL:"+us);
}
if(u!=null){
ac.showDocument(u); //在當前瀏覽器窗口顯示煙台大學主頁
}
}
}
如果將上面程序中的語句
ac.showDocument(u);
改為
ac.showDocument(u,"_blank");
那麼程序將保留原來的瀏覽器窗口,然後打開一個新的瀏覽器顯示煙台大學主頁。
參考文獻
1. 劉其成等. Java語言基礎教程. 石油大學出版社,2001
2. 劉其成等. 基於Java的DHTML技術及其應用. 微型機與應用. 2000, 12
3. 劉其成等. 面向對象的柔性設計與控制理論. 計算機工程與應用. Vol 38, No.18
4. 劉其成等. 基於Java數據報通信技術的聊天室設計與實現. 信息技術. 2002, 8
引用
沒有留言:
張貼留言