5

ActionContext.getContext().getSession()在阅读了通过获取会话映射和通过注入 之间的区别之后,SessionAware我想知道哪种方法是首选方法,为什么?

API 建议使用SessionAware,我在网上看到 usingSessionAware使应用程序更易于测试——测试是唯​​一的问题吗?

有人可以详细说明这个主题或指出解释这一点的参考资料吗?

4

2 回答 2

2

我已经在您之前的问题中回答了相同的问题。您可以使用任何一种方式,甚至可以通过更多方式访问会话。

单程

Map attibutes = ActionContext.getContext().getSession();

但是如果你使用这个并且你的动作类直接绑定到ActionContextStruts2 特定的方式。Struts2 的主要目标之一是将 Action 类与底层 HTTP 上下文以及其他直接依赖项解耦。为普通 POJO 编写测试用例也比其他方式简单且更好。

通过实现SessionAware接口,您可以向 Struts2 表明您希望会话作为一个简单的映射对象,这不仅使代码更加解耦,而且易于维护和测试。

我希望其他人会在这方面提供更多的优点

于 2011-09-13T12:39:36.390 回答
0

SessionAware是一种依赖注入方法,而ActionContext.getContext().getSession()不是。否则,它们是相同的。这两种方法都返回 aMap<String, Object>而不是HttpSessionservlet API 的一部分。

于 2011-09-13T13:20:15.840 回答