这里的目标是让一个带有按钮的servlet在被点击时在会话内存之外创建一个持久的Date()
对象,即在关闭浏览器和访问页面后可以检索变量值。
想知道这里最好的方法是什么?
我考虑过数据库或写入文件。
想要在屏幕上显示标签和按钮,当单击按钮时,它会在服务器上创建时间戳,标签包含自单击按钮以来的“时间已过去”。
基本上是持续时间,但所有用户/会话都可以看到相同的值
一旦请求加载#timeStarted
,就会有一些javascript用setInterval()
更新持续时间,这部分没问题。
"<label id=\"timeStarted\"> + getTimeStarted() + "</label>"
<form method="post" action="SomeServlet">
<input type="submit" value="Go"/>
</form>
在SomeServlet
中声明变量/持久对象:
Date timeStarted = new Date();
答案 0 :(得分:0)
您可以使用getServletContext()方法将其存储在ApplicationContext级别并将其存储在那里。这将使时间保持在应用程序级别。
但请记住,如果您在具有负载均衡器的多台服务器上运行该应用程序,则可能无法实现此目的。然后你必须寻找基于数据库的解决方案。否则,您可以将其存储在应用程序上下文中并检索所有用户。
在你的doGet / doPost方法中,
ServletContext context = request.getServletContext();
context.setAttribute("clicktime", new Timestamp(System.currentTimeMillis()));
答案 1 :(得分:0)
决定在这里使用一些AJAX,
单击按钮后,它会向{servlet'发送xmlhttprequest
然后servlet创建一个存储Date()
对象值的文件,即长
加载页面时,它会从文件中检索Date
值并显示在屏幕上..因此持久存储。