请帮帮我。有没有办法如何使用在所有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
}
}
感谢您的回答。
答案 0 :(得分:3)
您可以在请求,响应或会话中保存任何对象。当你检索它时,你只需要将它强制转换回正确的类。
答案 1 :(得分:1)
您可以将其存储在会话中 - 非常常见。而且在外部类中的一些公共静态Collection中 - 为了示例Util.myCollection。但要小心,servlet应该是线程安全且无状态的,因此后者可以很容易地被认为是反模式 - 你可以在这方面遇到很多麻烦。
答案 2 :(得分:0)
这取决于您想要存储的位置:
ServletContext.setAttribute()
:终身申请。HttpServletRequest.setAttribute()
:终身请求。这将不适用于进一步的请求。HttpServletSession.setAttribute()
:用于用户会话范围的生命周期。这仅适用于用户会话。