Вопрос по – Разница между перехватчиками и фильтрами - это правильно?

11

Я исследую это, чтобы лучше отвечать на собеседованиях. Я искал четкий и краткий ответ.

Пока и непременно поправьте меня, если я ошибаюсь или мне не хватает деталей:

Filters are part of the Servlet API, Interceptors are Struts 2. (Seems obvious though) The Interceptor stack fires on requests in a configured package while filters only apply to their mapped URLs. Interceptors can be configured to execute or not depending on specific target action methods via excludeMethods and includeMethods while Filters lack this feature. Filters are an implementation of the Intercepting Filter pattern while Interceptors are of the Interceptor pattern.

Похоже ли это на точный и полный ответ? Должен ли я добавить или исправить что-нибудь? А как насчет вопросов / различий в потоках?

Ваш Ответ

4   ответа
2

Я думаю, что первым пунктом является ответ, но вы, вероятно, сможете сказать больше, чем просто

interceptors are in struts 2 and filters are part of the Servlet API

На самом деле, как интервьюер я бы ожидал и надеюсь, что здесь вы объясните, в чем именно заключается разница между API-интерфейсом Servelt и средой веб-приложений, такой как Struts 2. На самом деле это шанс показать ваше понимание всей экосистемы и инфраструктуры веб-приложений Java.

Хорошие ответы могут касаться:

  1. How the Struts 2 framework is implemented within a Servlet Filter.

  2. What specific use cases would call for a servlet filter outside of struts 2 but within the same web application?

  3. What indeed is the Servlet API, a web application, a web application framework, etc.?

Я думаю, что ответ на вопрос, который показал ваше понимание всех этих тем, - это то, что там искали.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

В одном из интервью я ответил на этот вопрос, как,

Перехватчики - это концепция Struts2, и разработчик приложения контролирует ее. Кроме того, он работает с границей приложения struts2 и имеет доступ к действиям, ValueStack и другим объектам вместе со вкусностями Struts2.

Хотя фильтр больше подходит для настройки времени развертывания. Он имеет ограниченный доступ к приложению, и в большинстве случаев он является общим для большинства веб-приложений, развернутых на сервере.

Если логика в коде больше связана с Application, лучше подходит для перехватчика или для его инфраструктуры, мы можем поместить ее в фильтр сервлета.

2

Фильтры из Servlet API, а перехватчики из Struts 2, Разница возникает, когда мы говорим о веб-приложениях и корпоративных приложениях, Фильтр используется только в веб-приложениях, тогда как перехватчик может использоваться как с веб-приложениями, так и с корпоративными приложениями. Методы жизненного цикла у обоих тоже различны.

Стек перехватчика срабатывает при каждом запросе. фильтры применяются только к тем URL, для которых они определены. Вы используете один или другой в зависимости от необходимости. Допустим, вам нужно проверить наличие cookie для каждого запроса. Используйте перехватчик. Допустим, по некоторым запросам (по URL-адресу) нужно вызывать внешнее приложение, использовать фильтр.

Error: User Rate Limit Exceeded
0

Filters:

  1. Based on Servlet Specification
  2. Executes on the pattern matches on the request.
  3. Not configurable method calls.

Interceptors:

  1. Based on Struts2.
  2. Executes for all the request qualifies for a front controller (a Servlet filter). And can be configured to execute additional interceptors for a particular action execution.
  3. Methods in the Interceptors can be configured whether to execute or not by means of excludeMethods or includeMethods.

Похожие вопросы