当前位置: 首页 > 面试题库 >

Java applet中的对象持久性

潘哲
2023-03-14
问题内容

保存Java applet状态的好方法是什么?

我可以处理文件的对象序列化/反序列化,但不知道应将其放置在什么地方,或者是否有一些“注册表”可以只保存几个用户设置。

这些设置取决于硬件,因此我想将其保存在客户端上。

对applet拥有完全许可。


问题答案:

保存Java applet状态的好方法是什么?

对于受信任的applet,有很多选择。

我可以处理对象从文件到文件的序列化/反序列化,但不知道应将其放置在何处。

将信息放在的子目录中user.home

  • user.home 将是一个可写的地方。
  • 子目录(例如,基于applet类的包名称),以避免与其他应用程序的设置文件冲突。

..或者如果有一些“注册表”,我可以保存几个用户设置。

我听说Preferences该类可以用于..

此数据永久存储在与实现相关的后备存储中。典型的实现包括平面文件,特定于操作系统的注册表,目录服务器和SQL数据库。此类的用户不必关心后备存储的详细信息。

听起来很整洁,不是吗?唯一的麻烦是,我从来没有能够举例说明两次运行之间的值仍然存在!

对象序列化带有一个巨大的警告,它可能随时中断。

我会使用您自己的规范的文件位置(例如中的user.home),或者使用Properties文件(对于简单的名称/值对)XMLEncoder/
XMLDecoder(对于更复杂的Java
bean)。

当然,如果此applet部署在Plug-In 2体系结构JRE中并可以访问JNLP
API,则可以使用PersistenceService。这是一个演示。的PersistenceService

即使是沙盒小程序也可以使用PersistenceService-与Cookie的概念类似,因为它仅用于少量数据。



 类似资料:
  • 使用 Session.delete() 会把对象的状态从数据库中移除。当然,你的应用程序可能仍然持有一个指向已删除对象的引用。所以,最好这样理解:delete() 的用途是把一个持久实例变成瞬时(transient)实例。 sess.delete(cat); 你可以用你喜欢的任何顺序删除对象,不用担心外键约束冲突。当然,如果你搞错了顺序,还是有可能引发在外键字段定义的 NOT NULL 约束冲突。

  • 事务中的持久实例(就是通过 session 装载、保存、创建或者查询出的对象) 被应用程序操作所造成的任何修改都会在 Session 被刷出(flushed)的时候被持久化(本章后面会详细讨论)。这里不需要调用某个特定的方法(比如 update(),设计它的目的是不同的)将你的修改持久化。所以最直接的更新一个对象的方法就是在 Session 处于打开状态时 load() 它,然后直接修改即可: D

  • Hibernate 认为持久化类(persistent class)新实例化的对象是瞬时(Transient)的。我们可通过将瞬时(Transient)对象与 session 关联而把它变为持久的(Persistent)。 DomesticCat fritz = new DomesticCat(); fritz.setColor(Color.GINGER); fritz.setSex('M');

  • 1. 前言 本节课和大家聊聊持久化对象的 3 种状态。通过本节课程,你将了解到: 持久化对象的 3 种状态; 什么是对象持久化能力。 2. 持久化对象的状态 程序运行期间的数据都是存储在内存中。内存具有临时性。程序结束、计算机挂机…… 内存中的数据将不复存在。 重要的数据,需要使用持久化技术将数据保存到永久性设备上。Hibernate 能够通过 PO(持久化对象) 将数据持久化到数据库。 Hibe

  • 创建新的Shelf # shelve_create.py import shelve with shelve.open('test_shelf.db') as s: s['key1'] = { 'int': 10, 'float': 9.5, 'string': 'Sample data', } # shelve_existing

  • 在传统的Web开发中,PHP创建的对象、数据、资源等会在请求完毕后全部释放,导致很难做到持久化。而在WorkerMan中可以轻松做到这些。 在WorkerMan中如果想在内存中永久保存某些数据资源,可以将资源放到全局变量中或者类的静态成员中。 例如下面的代码: 用一个全局变量$connection_count保存一个当前进程的客户端连接数。 <?php use WorkermanWorker; r