问题,在一个JApplet上放了很多小应用,要给一个外部调用的接口,实现在启动JApplet的同时自动启动指定的小应用。 简单来说,需求:JApplet启动时根据外部参数进行不同的初始化动作。
如何传递外部参数?
因为外部调用的方式就是浏览器点击,所以我很直接的想到了通过地址栏的URL地址传递参数。
即:http://a.b.com/applet.html?color=blue
如何在JApplet里获取参数param=value?
以前写过一段代码,是通过JavaScript方式获取的,代码如下:
try {
JSObject win = JSObject.getWindow(this);//'this' is the JApplet object
JSObject location = (JSObject) win.getMember("location");
String search = (String) location.getMember("search");
if (search.indexOf(key) != -1) {
int pos_start = search.indexOf(key) + key.length() + 1;
int pos_end = search.indexOf("&", pos_start);
if (pos_end == -1)
return search.substring(pos_start);
else
return search.substring(pos_start, pos_end);
} else
return null;
} catch (netscape.javascript.JSException e) {
return null;
}
这段代码是一年前在Windows上写的,今天到Linux用,发现用不了。
没有深究原因,可能是与浏览器有关,可能是与操作系统有关。
似乎有太多我无法控制的东西,所以,我决定换种方式。
Applet有一个方法String getParameter(String name)。作用是返回Html标签中的名为name的参数值。
例如,下面是html文件的代码:
<applet code="Clock" width=50 height=50>
<param name=Color value="blue">
</applet>
那么在Applet中调用 getParameter("Color") 将返回 "blue"。
但是,这种参数是写死在Html文件里面的,我想要的是URL地址中的参数,不符合要求啊。
呵呵,看博客的朋友莫要笑我,我是真的不懂网页开发的。
其实,这个太简单了,随便找个动态页面就可以了。asp, jsp, php...
于是我就挑了个以前接触过的php。
php里面通过$_GET['name']来获取参数值,页面代码很简单,如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JApplet</title>
</head>
<body>
<applet code="Clock" width=50 height=50>
<param name=Color value="$_GET['Color']">
</applet>
</body>
</html>
有了上面的代码,在我的JApplet.init()用getParameter获取参数,方便快捷,比JavaScript好多了,呵呵。
Last modified on 2009-02-19