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

JavaEE - Web application, and logic for navigation

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

  1. 用户选择了一个帐户列表。
  2. 列表到达控制器。
  3. 控制器存储帐户列表。
  4. 控制器将用户定向到编辑页面。
  5. 用户填写编辑表单。
  6. 表单已发送至控制器。
  7. 控制器检索以前保存的帐户列表。
  8. 编辑表单数据反映在记录列表中。
  9. 列表已从存储中删除。

当用户不执行第 5 步并决定执行其他操作时,我的问题就会出现。如果不从存储中删除列表,服务器将遭受内存泄漏。检测用户退出非常重要,这会导致系统自动删除列表。

我选择在服务器端保存要编辑的帐户列表,以防止它保存在用户端,其中用户很可能篡改数据.

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

我还没有开发它的实现,所以我现在只是在预测。谁能帮我这个?难道我做错了什么? 是我的逻辑有问题,还是我留下了有用的东西?

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

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

通常,超时阈值是一个可变的时间段(通常定义在web.xml)。根据可用的 network/memory 资源和预期的并发用户数,可能需要调整该值。

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

这有一些变体,即对话或视图范围,用户可以在每个选项卡上有一个会话。但原理是一样的:将东西放在会话中,稍后通过会话 ID(客户端的 cookie)获取它们。

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