如何在JApplet中获取URL地址中的参数

问题,在一个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好多了,呵呵。

Comments