我一直在使用Spring MVC测试Web应用程序,我目前正在为帐户开发一个编辑器页面。此JSP页面能够编辑一个或多个帐户,用于不同目的。例如,普通用户可以在此页面上编辑帐户数据。另一方面,管理员用户可以在此页面上编辑多个帐户。在逻辑方面(对我而言),管理员用户的多个帐户版本的工作方式如下:
当用户未执行步骤5并且决定执行其他操作时,会出现我的问题。如果不从存储中删除列表,服务器将遭受内存泄漏。检测用户的退出非常重要,这会导致系统自动删除列表。
我选择在服务器端保存要编辑的帐户列表,以防止保存在用户端,其中用户可以很好地篡改数据< /强>
我不妨使用JavaScript来检测用户何时离开页面,但他/她可能会关闭Javascript,这会导致同样的问题。因此,这是一个不切实际的解决方案。
我还没有开发它的实现,所以我现在正在进行预测。谁能帮我这个?难道我做错了什么? 我的逻辑中是否有错误,或者我是否留下了一些用处?
OBS:我正在使用Tomcat 8.0和Spring MVC 4.1.1,以及Java JDK 8。
答案 0 :(得分:2)
这是会话管理的全部目的。您的Web服务器为您完成。 当您使用Java EE或任何其他会话技术时,服务器应该处理超时,清理会话对象。这是基于用户空闲时间发生的。服务器如何知道用户是空闲的?因为对于浏览器发送的每个请求,他的会话ID都是在cookie中发送的。
通常,超时阈值是可更改的时间段(通常在web.xml中定义)。可能需要根据可用的网络/内存资源和预期的同时用户来调整此值。
事实上,会话+ cookie是处理HTTP无状态特性的唯一灵活而安全的方式。
存在这种变体,即会话或视图范围,其中用户可以在每个标签上具有会话。但原则是相同的:把东西放在会话中,然后通过会话ID(客户端的cookie)来获取它们。
最后,你不应该依赖浏览器来做服务器的东西。这不可靠。