Javaservlet共享集合
请帮帮我。有没有一种方法可以使用在所有Servlet实例之间共享的集合 我知道我可以在HttpRequestContext中保存字符串,但如何存储集合?我知道我可以使用数据库,但我更喜欢将所有内容存储在内存中Javaservlet共享集合,java,http,servlets,collections,Java,Http,Servlets,Collections,请帮帮我。有没有一种方法可以使用在所有Servlet实例之间共享的集合 我知道我可以在HttpRequestContext中保存字符串,但如何存储集合?我知道我可以使用数据库,但我更喜欢将所有内容存储在内存中 public class Servlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
public class Servlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
context.setAttribute("someValue", "aValue");
// Want to use collection here
}
}
感谢您的回答。您可以在请求、响应或会话中保存任何对象。当您检索它时,您只需将它转换回正确的类。您可以在请求、响应或会话中保存任何对象。当您检索它时,您只需将其转换回正确的类。您可以将其存储在会话中—这很常见。但是在外部类中的一些公共静态集合中也是如此——为了示例Util.myCollection。不过要小心,servlet应该是线程安全的和无状态的,因此后者很容易被视为反模式-这样做可能会遇到很多麻烦。您可以将其存储在会话中-非常常见。但是在外部类中的一些公共静态集合中也是如此——为了示例Util.myCollection。不过要小心,servlet应该是线程安全的和无状态的,因此后者很容易被视为反模式-这样做可能会遇到很多麻烦。这取决于您希望存储在哪里:
:用于应用程序的生存期ServletContext.setAttribute()
:用于请求的生存期。这将不适用于进一步的请求HttpServletRequest.setAttribute()
:用于用户会话范围的生存期。这将仅在用户会话中可用HttpServletSession.setAttribute()
:用于应用程序的生存期ServletContext.setAttribute()
:用于请求的生存期。这将不适用于进一步的请求HttpServletRequest.setAttribute()
:用于用户会话范围的生存期。这将仅在用户会话中可用HttpServletSession.setAttribute()