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