Java servlet共享集合

时间:2015-07-07 22:01:06

标签: java http servlets collections

请帮帮我。有没有办法如何使用在所有Servlet实例之间共享的集合?

我知道我可以在HttpRequestContext中保存字符串但是如何存储集合?我知道我可以使用数据库,但我更愿意将所有内容存储在内存中

public class Servlet extends HttpServlet {

    public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      context.setAttribute("someValue", "aValue");
      //  Want to use collection here
  }

}

感谢您的回答。

3 个答案:

答案 0 :(得分:3)

您可以在请求,响应或会话中保存任何对象。当你检索它时,你只需要将它强制转换回正确的类。

答案 1 :(得分:1)

您可以将其存储在会话中 - 非常常见。而且在外部类中的一些公共静态Collection中 - 为了示例Util.myCollection。但要小心,servlet应该是线程安全且无状态的,因此后者可以很容易地被认为是反模式 - 你可以在这方面遇到很多麻烦。

答案 2 :(得分:0)

这取决于您想要存储的位置:

  • ServletContext.setAttribute():终身申请。
  • HttpServletRequest.setAttribute():终身请求。这将不适用于进一步的请求。
  • HttpServletSession.setAttribute():用于用户会话范围的生命周期。这仅适用于用户会话。