Должен ли я получить сессию через SessionAware или ActionContext? - PullRequest
4 голосов
/ 13 сентября 2011

После прочтения различий между получением карты сеанса через ActionContext.getContext().getSession() и вводом ее через SessionAware Мне стало интересно, какой метод предпочтительнее и почему?

API рекомендует использовать SessionAwareи я читал в Интернете, что использование SessionAware облегчает тестирование приложения - является ли тестирование единственной проблемой?

Может кто-нибудь немного рассказать об этом или указать ссылки, объясняющие это?

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

Я уже ответил тем же на ваш предыдущий вопрос. Вы можете использовать любой способ или даже получить доступ к сеансу несколькими способами.

в одну сторону

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

Но еслиВы используете это, и ваш класс действий напрямую связан с ActionContext, который является определенным образом Struts2.Одной из основных целей Struts2 является отделение классов Action от базового HTTP-контекста и других прямых зависимостей.Кроме того, написание тестовых примеров для простого POJO намного проще и лучше, чем в других случаях.

Реализуя интерфейс SessionAware, вы указываете Struts2, что вы хотите, чтобы сессия была простым объектом карты, а это не только делало код сильно разъединеннымно прост в обслуживании и тестировании.

Я надеюсь, что кто-то еще придет с большим количеством хороших моментов в этом

0 голосов
/ 13 сентября 2011

SessionAware - это метод внедрения зависимостей, тогда как ActionContext.getContext().getSession() - нет. В остальном они идентичны. Оба эти подхода возвращают вам Map<String, Object>, а не HttpSession, который является частью API сервлета.

...