请帮帮我。有什么方法可以使用在所有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
}
}
谢谢你的回答。
发布于 2015-07-07 14:16:48
您可以将其存储在会话中--非常常见。但也存在于外部类中的一些公共静态集合中--为了示例Util.myCollection。但是要小心,servlet应该是线程安全的和无状态的,因此后者可以很容易地被看作是一个反patttern--您在这样做时会遇到很多麻烦。
发布于 2015-07-07 14:03:35
您可以在请求、响应或会话中保存任何对象。检索它时,只需将其转换回正确的类即可。
发布于 2015-07-07 15:16:30
这取决于您想要存放在哪里:
ServletContext.setAttribute()
:用于应用程序的生命周期。HttpServletRequest.setAttribute()
:请求的生命周期。这将不能用于进一步的请求。HttpServletSession.setAttribute()
:用于用户会话作用域的生存期。这将只能在用户会话中使用。https://stackoverflow.com/questions/31280115
复制