您的位置:首页 > 移动开发

Java Applet与浏览器间的通信技术

2009-08-16 15:14 260 查看
摘 要:本文研究了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: