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