Передний контроллер был Servlet, но в Struts2, это фильтр. Какова возможная причина изменить его на фильтр?Почему в Struts1 есть Servlet, где, как и в случае Struts2, есть фильтр
ответ
(Это мнение, вы должны спросить оригинальные авторы WebWork.)
ИМО это немного более интуитивным, чтобы обернуть запросы внутри фильтра, так как это то, что фильтры были разработаны для.
Существовали дебаты о достоверности обслуживания ресурсов из фильтра. В спецификации говорится:
Фильтры обычно не создают ответ или ответить на запрос, как это делают сервлеты, , а они изменяют или адаптировать запросы к ресурсу, а также изменять или адаптировать ответы от ресурса.
Некоторые утверждают (в частности, некоторые билеты поддержки WebSphere, а иногда и сам перед повторным чтением спецификации во время email thread on the Struts User mailing list), что спецификация запрещено использование фильтра Struts 2, но ясно, что ничто не запрещает их использование в этом путь.
Фильтры обеспечивают большую гибкость при обращении с другими типами запросов (вперед, в том числе и с ошибками контейнера) с использованием элемента <dispatch>
под конфигурацией <filter>
.
Обратите внимание, что первоначально он был сервлета в WebWork - вы можете быть в состоянии смотреть на коммиты журналов выискивать причину, когда это было произошло изменение, но это было довольно некоторое время назад, по заказу 7+ лет.
Есть три варианта, почему фильтр обозначаемые как фронт-контроллер в Strtus2
Servlet сделан как фронт-контроллер необходим разработчик, чтобы обеспечить правильного значение, в котором позволяют рамки для инициализации много важных аспектов (а именно .), когда контейнер запускается. В отсутствие фрейма инициализируется только как первый запрос .Struts2 упрощает нашу жизнь, предоставляя фронт-контроллер в качестве фильтра, и по своей природе фильтры в web.xml автоматически инициализируются при запуске контейнера. Необходим такой тег load-on-startup.
Второй, но важный - это введение перехватчиков в рамки Struts2. Это не просто уменьшите наши усилия по кодированию, но поможет нам написать любой код, который мы использовали бы фильтры для кодирования и необходимые изменения в файле web.xml, в отличие от Struts1.So теперь любой код, который лучше подходит для Фильтр теперь может переместились в перехватчики (которые более управляемы , чем фильтры), вся конфигурация может управляться в файле struts.xml , не нужно касаться файла web.xml.
Передний контроллер , являющийся фильтром, также помогает в новой функции Struts, т.е. UI Темы.Все статические ресурсы в настоящее время обслуживают темы через фильтр
. Перехватчики можно так же легко запустить в контроллере сервлетов; фильтры не имеют к этому никакого отношения. Например, Spring MVC имеет перехватчики, но использует сервлет в качестве своего контроллера. Аналогично, контроллер сервлета может также обрабатывать статические запросы ресурсов (например, файлы CSS и JS для тем S2). –
Из-за вводящих перехватчиков в struts2. Для участников Struts2 необходимо, чтобы главные контроллеры были спереди, чтобы пользователь не мог нарушить угрозу в шаблоне Java EE. Однако диспетчеры Struts2 построены на вершине иерархии сервлета, но это уменьшает много усилий с точки зрения безопасности.
Причины:
- Обеспечить централизованный контроллер в качестве основы.
- Чтобы иметь перехватчики и контекст, который может танцевать на ваших пальцах.
Перехватчикам не требуется контроллер фильтра; перехватчики могли так же легко быть запущены из сервлета (и были, фактически, в исходном WebWork). Фильтры также не нужны для обеспечения централизованного контроллера, например, Struts 1 и Spring MVC используют сервлет как свои централизованные контроллеры. –
- 1. Как использовать фильтр в приложении Struts1?
- 2. Миграция из Struts1 в Struts2
- 3. Struts2 Миграция из Struts1 с использованием struts2-struts1-plugin
- 4. Как добавить Struts2 в Struts1 framewok
- 5. Struts2/Struts1 action calls
- 6. Servlet фильтры: есть `doFilter (HttpServletRequest)`
- 7. Почему есть волшебные атрибуты, отображаемые в спецификации Servlet?
- 8. Можно использовать теги Struts1 в шаблонах Velocity в Struts1?
- 9. Предложите путь прогрессии от struts1 → (struts2, spring)
- 10. Почему у вас есть «где»
- 11. struts1 to struts2 ресурс сообщений миграции
- 12. Почему программа Servlet выводит текст HTML так, как есть?
- 13. Использовать «есть» или «как» в этом случае?
- 14. Загрузка изображения в java (struts2/struts1/spring mvc)
- 15. Отправка объектов и списки struts1
- 16. Пользовательские Java Servlet фильтр
- 17. Есть ли рабочий учебник для Struts2 + Tiles?
- 18. Почему у нас есть суффикс после числа в этом случае?
- 19. Почему в этом случае у меня есть исключение IOException?
- 20. Фильтр используется в качестве контроллера в Struts2
- 21. Почему у нас есть выход: S1S2 в этом случае?
- 22. Есть ли накладные расходы в тестовом случае
- 23. Servlet IP фильтр
- 24. Есть ли встроенный фильтр в Neo4J Cypher?
- 25. Servlet фильтр для безопасности
- 26. Где в JavaScript есть запрос?
- 27. Есть ли реализация JVM в худшем случае?
- 28. Когда и где мы пишем «url.do» в struts1
- 29. Как использовать сервлеты в struts2
- 30. Есть ли фильтр ИЛИ? - Джанго
wok на вас принятие ответов. –