Встречается на собеседованиях • сегодня

В чем разница между Filters и Interceptors

Filters и Interceptors выполняют схожие задачи (перехват и обработка запросов/ответов), но работают на разных уровнях и имеют разные возможности:

Filters (сервлетные фильтры):

  • Работают на уровне контейнера сервлетов (низкоуровневые)
  • Применяются до/после сервлета
  • Могут работать с любыми веб-ресурсами (JSP, статические файлы)
  • Пример:
java
@WebFilter("/*")
public class LogFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
        // логирование перед обработкой
        chain.doFilter(req, res); // передача дальше
        // логирование после обработки
    }
}

Interceptors (перехватчики):

  • Работают на уровне фреймворка (Spring, JAX-RS)
  • Применяются к контроллерам/методам
  • Имеют доступ к контексту фреймворка (DI, аннотации)
  • Пример в Spring:
java
@Component
public class AuthInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) {
        // проверка авторизации
        return true; // продолжить обработку
    }
}

Filters - более низкоуровневые, Interceptors - интегрированы в бизнес-логику приложения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы