2014-12-07 49 views
1

我想每20分钟更新一次用户会话属性(例如,用户的金额)。我怎样才能做到这一点?有任何想法吗?每隔固定的时间间隔更新会话属性。 Java,Servlets,JSP

+0

只有当浏览器/前端/ jsp调用servlet时才会执行,因此您必须让您的一些javascript每20分钟调用一次servelt ...或者您可以操作会话对象使用javascript – TungstenX 2014-12-07 16:26:55

+0

@TungstenX除了通过调用servlet之外,还有很多方法来操作会话属性。会话只是一个对象,可以在Java代码中的任何位置进行操作。并且不可能直接从Javascript代码操作(甚至访问)会话对象。 – abl 2014-12-07 16:51:17

+0

@abl当然可以在Javascript中获得会话对象:<%HttpSession s = request.getSession(false); %>,你是正确的,在Java方面,你可以在某些条件下获得会话对象。 – TungstenX 2014-12-09 15:35:57

回答

0

您可以使用Timer Service执行此任务。

如果使用Spring你可以尝试TaskExecutor

+0

如何在计时器任务中获得特定会话对象? – TungstenX 2014-12-09 15:39:00

+0

您可以将用户的会话放到servlet端的计时器任务 – 2014-12-09 21:36:36

2

你的问题有两个截然不同的部分:

  1. 如何更新用户会话属性,每当我想?
  2. 我该如何每20分钟做一次?

在第一部分,你只需要保持你可以从任何地方访问(不含即需要有一个HttpServletRequest的)所有当前会话的集合。这是在这篇文章中回答: How do I get a list of all HttpSession objects in a web application?

对于第二部分,你最适合可能是ScheduledExecutorService。另请参阅:Running a Java Thread in intervals