Сервлет против фильтра


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

3 54

3 ответа:

использовать Filter Если вы хотите фильтр и/или изменить запросы, основанные на конкретных условиях. Используйте Servlet Если вы хотите управление, препроцесс и / или постпроцесс запросы.

The Java EE tutorial упоминает о фильтрах:

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

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

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

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

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);
    }
}

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

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