1

我有一个 HTTPSession 对象,我想在其中存储用户信息。

我有两个选择

  • 将用户电子邮件存储为字符串并将用户从数据库中取出并每次使用这些字段。
  • 将 User 对象存储在会话中并获得 JSTL 支持,例如我可以做 ${User.firstName}

哪一个是更好的解决方案?最佳实践?

4

3 回答 3

2

我认为作为对象存储会更好......

于 2012-07-23T09:41:25.250 回答
1

这完全取决于您是否希望用户信息在会话的生命周期内发生变化。

如果它没有改变,或者您不在乎显示陈旧的值,那么将用户存储在会话中就可以了。否则,每次都需要从数据库中获取最新的用户信息。

不过,我会避免通过他的电子邮件地址来识别用户,因为它可能会过期和更改。使用技术用户 ID,并将他的电子邮件存储为用户的任何其他信息。

于 2012-07-21T11:00:27.187 回答
0

我会小心在会话中存储大对象,因为它可能成为性能瓶颈。完整对象可能是更舒适的解决方案,但如果您存储的对象很大,您可能会遇到内存和性能问题,因为该对象是序列化和反序列化的。这也意味着您只能在会话中存储可序列化的对象(意味着它们需要实现 Serializable 接口)。

我总是尝试在会话中尽可能少地存储。在您的情况下,只需存储标识符并稍后查找用户对象,例如使用一些实用方法。

于 2012-07-23T09:46:58.363 回答