Сервлет против фильтра
в чем разница между a сервлет и Filter? Что вы рекомендуете использовать для авторизации на страницы?
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); } }