我正在做 Spring Web 应用程序。我有一个表单,需要在表单 GET 和 POST 中加载表单对象。我有两种加载对象的方法:
通过在方法上注解的 @ModelAttribute 加载对象
通过表单的 GET 方法加载对象并使用 @SessionAttributes({"command"}) 注释表单控制器
我的问题是:
将 @ModelAttribute 方法用于具有大量同时在线用户的 Web 应用程序是一个好主意吗?它可以有所作为吗?
我正在做 Spring Web 应用程序。我有一个表单,需要在表单 GET 和 POST 中加载表单对象。我有两种加载对象的方法:
通过在方法上注解的 @ModelAttribute 加载对象
通过表单的 GET 方法加载对象并使用 @SessionAttributes({"command"}) 注释表单控制器
我的问题是:
将 @ModelAttribute 方法用于具有大量同时在线用户的 Web 应用程序是一个好主意吗?它可以有所作为吗?
@ModelAttribute 与 @SessionAttributes 的比较实际上是一种架构判断,即:有状态与无状态。
还有第三个选项可以将状态存储在表单中。这意味着当点击提交时,初始get方法中加载的数据在post中发送,因此不需要重新加载。
还有第四个选项是存储在 cookie 中。
使用会话时需要考虑许多问题:
即使您有适当的架构来管理会话,也应该将使用量保持在最低限度,因为它们需要系统内存,而存储在数据库中的状态只需要磁盘空间,而存储在客户端上的状态只需要客户端内存。
还需要考虑安全性,存储在服务器上的状态比存储在客户端的状态更安全。