情况

我有一些单一职责的 Servlet,它们接受请求、完成工作、响应并完成——在这些情况下不需要维护状态。

但是,我拥有“Plain Old Java Object”,它根据用户在客户端上发起的操作维护状态信息,我希望应请求提供给我的 Servlet。我想让这个对象的单个实例可用,并且不需要/不想维护多个共享实例。

旁注:这些数据是暂时的(可能需要将其保留 10 分钟),并不是我想保留在数据库中的真正内容。

问题

我之前用 JSP 维护了一个对象的共享实例,但在这种情况下,Servlet 更有意义。所以,我的问题是如何适本地管理这个对象的生命周期,该对象维护状态并可以通过 HTTP 请求或其他机制在无状态 Servlet 之间共享它?

换句话说,如果这是一个非 Web 应用程序,则无状态 Servlet 将是我将任务委托(delegate)给的对象,而有状态对象将维护结果。

我已经研究了 ServletContext,但我不完全理解这样做的目的是要知道这是否是我需要的。

最佳答案

也许我理解错了你的问题,但你有没有想过这次 session ?

[编辑]
所以你真的需要这个 session 。

例如,您可以通过以下方式使用 session :

public class TestServlet extends HttpServlet {
....
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws  ServletException, IOException {
    request.getSession().setAttribute("test", new Date());
  }
....
}

您存储在那里的对象应该是可序列化的 IIRC。

如果您使用 eclipse 或 netbeans,代码洞察功能和 javadoc 应该会引导您了解如何将其用于更高级的东西。

关于java - Java Servlet 之间如何维护状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1445590/

10-12 23:54