阅读通过ActionContext.getContext().getSession()
获取会话地图并将其注入之间的差异
SessionAware
我想知道哪种方法首选,为什么?
API建议使用SessionAware
,我在网上看到使用SessionAware
使应用程序更易于测试 - 正在测试唯一的问题吗?
有人可以详细说明这个问题或指出解释这个问题的参考资料吗?
答案 0 :(得分:2)
我已经在你之前的问题中回答了同样的问题。你可以使用任何一种方式,甚至可以通过更多方式访问Session。
单程
Map attibutes = ActionContext.getContext().getSession();
但是如果你使用它,你的动作类直接绑定到Struts2特定方式的ActionContext
。
Struts2的主要目标之一是将Action类与底层HTTP上下文以及其他直接依赖项分离。
另外,为普通POJO编写测试用例比其他方式更简单,更好。
通过实现SessionAware
接口,您指示Struts2您希望会话作为一个简单的地图对象,这不仅使代码解耦,而且易于维护和测试。
我希望其他人能在这个问题上获得更多好处
答案 1 :(得分:0)
SessionAware
是依赖注入方法,而ActionContext.getContext().getSession()
则不是。否则,它们是相同的。这两种方法都返回Map<String, Object>
而不是HttpSession
,它是servlet API的一部分。