繁体   English   中英

Java applet静态类

[英]Java applet static class

我的问题是在applet中存储一些用户输入以减少用户操作。 我为此使用静态字段。 但是我注意到,如果用户转到浏览器中的多个选项卡-新的“线程”(或类似的东西)启动了,而这个新线程中的静态类为空。 也许还有另一种解决方案可以在applet中保存一些数据?

编辑

好。 更多细节。 我有一个用于数字签名的小程序。 用户一次选择证书(X509Certificate)并将其用于签署所有文档。 我有这样的课:

   public class CertificateContainer
    {
        private static X509Certificate certificate;
        ...

使用静态字段在应用程序的各个部分之间传递用户输入是非常不好的做法 数据应存储在必要时传递的对象中。

但是对于您而言,要在多个小程序之间共享数据,最好的解决方案是使用java.net.CookieHandler将其存储在浏览器cookie中。

不同浏览器选项卡中的小程序是独立程序。 根据浏览器和Java-Plugin,它们甚至可以在不同的VM中运行,但是即使在同一VM中,它们也很可能具有独立的类加载器,并且无法通过静态变量进行通信。

如果需要存储用户数据,则可以使用JNLP API ,例如PersistenceService。

对于1.6 Sun插件,仅当您的小程序由JNLP加载时才可用;在IcedTea插件(随某些版本的OpenJDK发行)中,它也可用于由常规applet标记加载的小程序(不带JNLP)。

(我不知道小程序将如何使用CookieHandler。)

听起来您不应该使用静态字段来存储用户数据。 另外,我认为新的浏览器选项卡不会创建新的线程,因为它应该是applet的完全独立的实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM