10.4.1 小应用程序与浏览器之间的通信
在应用Java技术进行软件开发时,通常都会遇到Java Applet程序与互联网浏览器之间的通信的问题。在java.applet包中的Applet类里提供了许多方法,使之可以与浏览器进行通信,包括getCodeBase()、getDocumentBase()、getParameter()、getParameterInfo()、show-Status()、getAppletInfo()等方法。另外,还有java.applet包中的的AppletContext类里的showDocument()方法。
1.getParameter()方法
Java Application通过命令行接受用户参数,在Applet中,这个任务是通过HTML文件的另一个专门标记<PARAM>来完成的。从下面的例子中可以看出它的使用方法:
这个HTML文件中嵌入了一个名为AppletParam的Applet,同时在Applet运行时将向它传递两个字符串参数:一个参数名为varname,取值为“Bush”;另一个参数名为varnum,取值为26。可见每个<PARAM>标记都只能传递一个字符类型的参数,这个参数的名字用来把它和其他参数区分开来,用name指定,这个参数的参数值用value指定。这些值可以被applet中的getParameter()得到。
Applet利用getParameter()方法来获取HTML传递来的参数。这个方法的格式为:
String getParameter(String name);
该方法的功能是返回HTML中设定的值。字符串参数表示它所希望获取的HTML参数的名字(即name指定的参数名)。方法的返回值是一个字符串对象,即HTML文件中value指定的字符串,如果希望这个参数是其他类型,还要进行参数类型的转换。在处理Applet参数时,通常要给出缺省值,以防止用户未给出该参数或给出非法参数值而使程序无法执行。
【例10-8】 通过Applte中的getParameter方法获取HTML中提供参数。
程序运行结果如图10-7所示。
图10-7 参数获取
分析与思考:使用getParameter所得到的结果是字符串,如果要进行运算,需要转化成相应的类型。
模仿例10-8:增加字体和大小的参数,对上面文字重新显示。
2.showStatus()方法
Applet可以通过显示简短的状态串,报告Applet的运行情况,状态串显示在浏览器或Appletviewer窗口的底部。在浏览器中,一个Web页上的所有Applet与浏览器本身共享同一状态显示域。Applet显示状态串使用showStatus()方法,showStatus()方法就是用来在浏览器的状态条显示信息。这个方法的格式为:
void showStatus(String msg);
下面的例子说明了如何使用showStatus()方法,该程序的功能是单击按钮button,将文本框中的内容显示在浏览器的状态条中。
【例10-9】 浏览器的状态条中显示文字。
程序运行结果如图10-8所示。
图10-8 浏览器的状态条
通常showStatus()方法显示信息只是暂时性的,所以不应该用于显示重要的信息或用于调试。由于状态显示域位置不突出,并且随时可能被浏览器或其他Applet重写,因而状态串通常只应是一些不常用的辅助性的信息。对于一些至关重要的提示和警告信息,不要作为状态串显示在状态行,应该显示在Applet区域本身或是显示在标准输出上。
3.showDocument()方法
showDocument()方法是AppletContext类的方法。它可以用来请求浏览器显示一个URL地址对应的HTML文件,并且可以控制显示在哪个浏览器窗口。它的格式如下:
void showDocument(URL url);
或者:
void showDocument(URL url,String target);
具有一个参数形式的showDocument()指示浏览器在指定的URL显示有关文档,它没有指出显示文档的窗口,指定的HTML文件将在Applet所在的窗口中显示。
具有两个参数的showDocument()进一步指定显示文档的窗口,第二个参数target可以指明显示Applet的窗口,可以取下列值:
·“_self”在Applet的窗口中显示文档;
·“_parent”在Applet窗口的父窗口中显示文档,若Applet是顶级窗口,效果同“_self”;
·“_top”在Applet窗口的顶级窗口显示本文档;
·“_blank”在一个新的无名窗口上显示文档;
·“windowname”在名为windowname的窗口上显示文档,这一窗口可在需要时生成。
【例10-10】 下面的程序在当前浏览器窗口中显示给定URL的主页面。
如果将上面程序中的语句:
ac.showDocument(u);
改为:
ac.showDocument(u,″_blank″);
那么程序将保留原来的浏览器窗口,然后打开一个新的浏览器显示主页面。HTML页面为:
注意,需要使用IE浏览器打开,不能使用appletviewer打开,否则没有效果。