如何让两个小程序共享字段

时间:2012-12-07 15:08:50

标签: java javascript applet japplet

我有两个小程序。 FirstApplet applet位于主HTML页面中。主页面使用javascript window.open(...)打开嵌入了SecondApplet applet的新页面。

以下是两个applet的定义方式:

public class SecondApplet extends JApplet{
    private static Long value;
    public void init(){
        value = new Long(6);
    }
    public static void testValue(){
        System.out.println(value);
    } 
}

public class FirstApplet extends JApplet{
    public void testValue(){
        SecondApplet.testValue();
    }
}

现在我的问题是FirstApplet调用

SecondApplet.testValue() 

静态字段已丢失其值,现在它的值为0。 我还尝试了我自己的对象模型,它们在SecondApplet init()方法中实例化,但是当调用FirstApplet.testValue()时,这些对象现在为NULL。

任何人都知道为什么会发生这种行为?我只是感到困惑,因为两个Applet都存在于同一个JVM中。

BTW,我也尝试过使用getAppletContext.getApplet(“secondapplet”),但它总是返回NULL。即使getAppletContext.getApplets()总是返回一个元素。我在HTML页面中验证了name属性,这是正确的。

如果这是安全问题,只是想补充说我没有任何错误或警告。

提前致谢。

1 个答案:

答案 0 :(得分:-1)

它们位于同一个JVM中,但它们是沙箱。他们使用不同的类加载器,并且禁止他们访问其他applet的类加载器,因此他们也可能在不同的JVM中。这是一项安全功能。您不希望某个恶意applet访问所有打开的浏览器窗口中的数据。

在不同的浏览器窗口之间共享数据是非常棘手的。如果你真的需要这样做,你应该告诉我们你的具体要求是什么。也就是说,为什么你需要共享数据吗?