如何仅在用户会话期间保留对象

How can I persist objects only during user session

我正在做一个 java ee web 应用程序(有 3 层:web、ejb、persistence db)。我想保存一些对象,但只在会话期间保存(不将它们保存在数据库中)。我怎样才能做到这一点?我应该将对象 (pojos) 保存在托管 bean 中吗?这样每个用户都会有自己保存的对象。

谢谢大家

在 http 会话期间,您有几种方法可以在内存中存储一​​些用户特定的信息。

  1. 具有会话范围的托管 bean(注释 @SessionSoped)。正如文档所说:

The session context is shared between all servlet requests that occur in the same HTTP session. The session context is destroyed when the HTTPSession times out, after all HttpSessionListeners have been called, and at the very end of any request in which invalidate() was called, after all filters and ServletRequestListeners have been called.

这样每个用户都会有自己的数据集存储在会话范围的 bean 中。

  1. 直接访问 HttpSession 并在那里存储用户特定的数据。

    FacesContext facesContext = FacesContext.getCurrentInstance(); HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false); ... session.setAttribute(键,值); ... session.setAttribute(键);