2012-05-14 3 views

ответ

4

(Это мнение, вы должны спросить оригинальные авторы WebWork.)

ИМО это немного более интуитивным, чтобы обернуть запросы внутри фильтра, так как это то, что фильтры были разработаны для.

Существовали дебаты о достоверности обслуживания ресурсов из фильтра. В спецификации говорится:

Фильтры обычно не создают ответ или ответить на запрос, как это делают сервлеты, , а они изменяют или адаптировать запросы к ресурсу, а также изменять или адаптировать ответы от ресурса.

Некоторые утверждают (в частности, некоторые билеты поддержки WebSphere, а иногда и сам перед повторным чтением спецификации во время email thread on the Struts User mailing list), что спецификация запрещено использование фильтра Struts 2, но ясно, что ничто не запрещает их использование в этом путь.

Фильтры обеспечивают большую гибкость при обращении с другими типами запросов (вперед, в том числе и с ошибками контейнера) с использованием элемента <dispatch> под конфигурацией <filter>.

Обратите внимание, что первоначально он был сервлета в WebWork - вы можете быть в состоянии смотреть на коммиты журналов выискивать причину, когда это было произошло изменение, но это было довольно некоторое время назад, по заказу 7+ лет.

-1

Есть три варианта, почему фильтр обозначаемые как фронт-контроллер в Strtus2

  1. Servlet сделан как фронт-контроллер необходим разработчик, чтобы обеспечить правильного значение, в котором позволяют рамки для инициализации много важных аспектов (а именно .), когда контейнер запускается. В отсутствие фрейма инициализируется только как первый запрос .Struts2 упрощает нашу жизнь, предоставляя фронт-контроллер в качестве фильтра, и по своей природе фильтры в web.xml автоматически инициализируются при запуске контейнера. Необходим такой тег load-on-startup.

  2. Второй, но важный - это введение перехватчиков в рамки Struts2. Это не просто уменьшите наши усилия по кодированию, но поможет нам написать любой код, который мы использовали бы фильтры для кодирования и необходимые изменения в файле web.xml, в отличие от Struts1.So теперь любой код, который лучше подходит для Фильтр теперь может переместились в перехватчики (которые более управляемы , чем фильтры), вся конфигурация может управляться в файле struts.xml , не нужно касаться файла web.xml.

  3. Передний контроллер , являющийся фильтром, также помогает в новой функции Struts, т.е. UI Темы.Все статические ресурсы в настоящее время обслуживают темы через фильтр

+0

. Перехватчики можно так же легко запустить в контроллере сервлетов; фильтры не имеют к этому никакого отношения. Например, Spring MVC имеет перехватчики, но использует сервлет в качестве своего контроллера. Аналогично, контроллер сервлета может также обрабатывать статические запросы ресурсов (например, файлы CSS и JS для тем S2). –

0

Из-за вводящих перехватчиков в struts2. Для участников Struts2 необходимо, чтобы главные контроллеры были спереди, чтобы пользователь не мог нарушить угрозу в шаблоне Java EE. Однако диспетчеры Struts2 построены на вершине иерархии сервлета, но это уменьшает много усилий с точки зрения безопасности.

Причины:

  1. Обеспечить централизованный контроллер в качестве основы.
  2. Чтобы иметь перехватчики и контекст, который может танцевать на ваших пальцах.
+0

Перехватчикам не требуется контроллер фильтра; перехватчики могли так же легко быть запущены из сервлета (и были, фактически, в исходном WebWork). Фильтры также не нужны для обеспечения централизованного контроллера, например, Struts 1 и Spring MVC используют сервлет как свои централизованные контроллеры. –

Смежные вопросы