2

为什么有时教程让 bean 实现 Serializable 对象而其他的却没有?我知道当我想通过网络发送对象时应该对其进行序列化,这是否证明会话中使用的每个 bean 都应该实现 Serializable 对象,而 JSP 页面中定义的 bean 不应该实现,因为它们不是使用 HTTP requeset 传输的

4

2 回答 2

3

我知道当我想通过网络发送对象时应该对其进行序列化,这是否证明会话中使用的每个 bean 都应该实现 Serializable

您似乎相信会话中的对象是在 http 传输中发送到客户端的?当然不是这样。传输的只是会话 ID(通常在 cookie 中)。servlet 容器(例如 Tomcat)只是将会话对象(bean 或非 bean)保存在内存中,由会话 id 索引。

此外,序列化不仅适用于网络传输,还适用于保存/加载到持久存储(例如磁盘)。

现在,许多 servlet 容器通常允许(取决于设置)将 Session 对象持久保存到磁盘,以便它们能够在应用服务器重新启动后继续存在。对于这种情况,必须让您的会话对象可序列化。

无论如何,实现 Serializable 接口对于每个 java bean 来说都是一件好事,而且通常很容易。

于 2011-02-06T04:24:53.563 回答
1

根据定义,一个格式良好的 Java Bean实现Serializable(无论如何它只是一个标记接口)或Externalizable(从 1.4 开始)因此,如果您的 bean 类没有实现,那么它就不是格式良好的。

但是,如果 bean 有一个众所周知的父类,那么实现 Serializable 的东西太多了,您通常可以摆脱它。

于 2011-02-06T04:15:45.457 回答