当Servlet破坏声明变量的值时

时间:2012-05-28 18:47:11

标签: java java-ee servlets

我在Servlet中声明List用于临时保存数据,然后插入数据库:

List poList= new ArrayList(); 

首次用户输入数据,然后在10-15或30-45分钟后输入更多数据。

Servlet或Servlet中是否有旧数据在规定时间后销毁所有先前输入的数据?

3 个答案:

答案 0 :(得分:2)

不要那样做。此webapp的所有用户只有一个servlet实例。这意味着所有用户将同时将数据存储在同一列表中。 HTTP会话是存储与特定用户关联的数据的地方,其生命周期必须跨越多个请求。

第一次请求:

request.getSession().setAttribute("myList", list);

第二次请求:

List<Something> myList = (List<Something>) request.getSession().getAttribute("myList);

另请注意,destroy无关紧要:当应用程序结束时调用destroy(例如,因为服务器已停止)。

答案 1 :(得分:1)

如果您希望按用户存储数据,则无法满足您的目的。将poList添加到HttpSession属性。在doPost() / {{1}中进行操作方法。

答案 2 :(得分:0)

这取决于。如果你的poList是单个的或者被声明为静态List,那么值就会保留在你的poList上。