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