Сервлет по сравнению с фильтром

Каково различие между Сервлетом и Фильтром? Что Вы рекомендуете использовать для авторизации для страниц?

55
задан UserNotFoundException 7 January 2017 в 02:34
поделиться

2 ответа

Используйте Фильтр, когда вы хотите фильтровать и/или изменять запросы на основе определенных условий. Используйте сервлет, когда вы хотите контролировать, предварительно обрабатывать и/или пост-обрабатывать запросы.

В учебнике по Java EE упоминается следующее о фильтрах:

Фильтр - это объект, который может преобразовывать заголовок и содержимое (или оба) запроса или ответа. Фильтры отличаются от веб-компонентов тем, что фильтры обычно сами не создают ответ. Вместо этого фильтр предоставляет функциональность, которая может быть "прикреплена" к любому виду веб-ресурса. Следовательно, фильтр не должен иметь никаких зависимостей от веб-ресурса, для которого он выступает в качестве фильтра; таким образом, он может быть составлен из нескольких типов веб-ресурсов.

Основные задачи, которые может выполнять фильтр, следующие:

  • Запрос запроса и соответствующие действия.
  • Блокировать пару запрос-ответ от дальнейшего прохождения.
  • Изменить заголовки и данные запроса. Это делается путем предоставления адаптированной версии запроса.
  • Измените заголовки и данные ответа. Вы делаете это, предоставляя адаптированную версию ответа.
  • Взаимодействовать с внешними ресурсами.

Для авторизации лучше всего подходит Фильтр. Вот базовый пример того, как фильтр проверяет запросы на наличие вошедшего пользователя:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    if (((HttpServletRequest) request).getSession().getAttribute("user") == null) {
        // User is not logged in. Redirect to login page.
        ((HttpServletResponse) response).sendRedirect("login");
    } else {
        // User is logged in. Just continue with request.
        chain.doFilter(request, response);
    }
}
96
ответ дан 7 November 2019 в 07:14
поделиться

Фильтры лучше всего подходят для авторизации. Это потому, что их можно настроить для работы на всех страницах сайта. Таким образом, вам нужен только один фильтр для защиты всех ваших страниц.

20
ответ дан 7 November 2019 в 07:14
поделиться
Другие вопросы по тегам:

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