我正在开发事务管理应用程序,并且正在使用 Struts 2。
我在内部使用了一个会话来设置和获取类似的值
ActionContext.getContext().getSession().put("string", string);
在应用程序中使用这样的会话有什么限制或任何缺点吗?
限制是计算机物理内存的大小。您不会在会话中存储动态值,因为有人可以同时修改它们,因此仅在会话中存储代表任何用户特定数据或静态值的那些值(即不会当会话存在时可以更改)。
注意:这里的static不是static关键字。
没有限制。 Struts 2 中的会话被实现为
Map
来简化对 servlet 会话属性的访问。
我已经写在this答案中:
是专门为您想要访问 servlet 会话属性而设计的。因此,用户可以在会话中保留对象的同步集合并使用它,而不是直接使用SessionMap
。HttpSession
我只知道一个缺点,如果你从操作上下文中获取会话,它可能会返回
null
。解决方案在this答案中。
有两种方法可以获取操作的会话映射:
- 实施
。默认情况下,会话映射是在操作调用时填充的。这是一个更好的方法。SessionAware
- 从操作上下文中获取会话映射。这样您应该确保请求由 Struts2 过滤器处理。
第一种方法是首选,如文档页面中所述,允许您在测试中使用会话。
这是您系统的内部/物理内存的大小。会话在您的 war 文件中创建一个单例类。war 文件存储在您的服务器中。服务器位于 Windows 中的 C: 文件夹中。所以会话取决于你的物理记忆。