JavaEE - Web应用程序和导航逻辑

时间:2015-02-13 22:35:51

标签: java spring spring-mvc tomcat servlets

我一直在使用Spring MVC测试Web应用程序,我目前正在为帐户开发一个编辑器页面。此JSP页面能够编辑一个或多个帐户,用于不同目的。例如,普通用户可以在此页面上编辑帐户数据。另一方面,管理员用户可以在此页面上编辑多个帐户。在逻辑方面(对我而言),管理员用户的多个帐户版本的工作方式如下:

  1. 用户选择帐户列表。
  2. 列表到达控制器。
  3. 控制器存储帐户列表。
  4. 控制器将用户定向到编辑页面。
  5. 用户填写编辑表格。
  6. 表单将发送给控制器。
  7. 控制器检索先前保存的帐户列表。
  8. 编辑表单数据会反映在记录列表中。
  9. 该列表将从存储中删除。
  10. 当用户未执行步骤5并且决定执行其他操作时,会出现我的问题。如果不从存储中删除列表,服务器将遭受内存泄漏。检测用户的退出非常重要,这会导致系统自动删除列表。

    我选择在服务器端保存要编辑的帐户列表,以防止保存在用户端,其中用户可以很好地篡改数据< /强>

    我不妨使用JavaScript来检测用户何时离开页面,但他/她可能会关闭Javascript,这会导致同样的问题。因此,这是一个不切实际的解决方案

    我还没有开发它的实现,所以我现在正在进行预测。谁能帮我这个?难道我做错了什么? 我的逻辑中是否有错误,或者我是否留下了一些用处?

    OBS:我正在使用Tomcat 8.0和Spring MVC 4.1.1,以及Java JDK 8。

1 个答案:

答案 0 :(得分:2)

这是会话管理的全部目的。您的Web服务器为您完成。 当您使用Java EE或任何其他会话技术时,服务器应该处理超时,清理会话对象。这是基于用户空闲时间发生的。服务器如何知道用户是空闲的?因为对于浏览器发送的每个请求,他的会话ID都是在cookie中发送的。

通常,超时阈值是可更改的时间段(通常在web.xml中定义)。可能需要根据可用的网络/内存资源和预期的同时用户来调整此值。

事实上,会话+ cookie是处理HTTP无状态特性的唯一灵活而安全的方式。

存在这种变体,即会话或视图范围,其中用户可以在每个标签上具有会话。但原则是相同的:把东西放在会话中,然后通过会话ID(客户端的cookie)来获取它们。

最后,你不应该依赖浏览器来做服务器的东西。这不可靠。