Фильтр сервлетов

Home » Uncategorized » Фильтр сервлетов
Uncategorized Комментариев нет

Фильтры сервлетов

Как работают фильтры сервлетов

Фильтры перехватывают запрос(HttpRequest) перед тем, как он попадет к сервлету, а также могут влиять и на ответ (HttpResponse) и писать в объект Writer с помощью PrintWriter()

При этом в фильтре нельзя изменять параметры запроса(HttpRequst(то, что передаеся в get и post)). (Когда необходимо провести некоторую фильтрацию параметров, их обработку и изменение-удобно соpдать у объекта Request одноименные аттрибуты и присваивать им обработанные параметры – таким образом, с помощью одного фильтра можно фильтровать параметры из нескольких форм)

Зачем нужны фильтры сервлетов

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

дескриптор развертывания

В дескрипторе развертывания все теги <filter> должны идти перед <servlet> и <listener>.
Параметры фильтра объявляются в дескрипторе внутри фильтра

В дескрипторе развертывания фильтр обозначается тегом , сервлет,к которому применяется фильтр определяется в теге
(фильтр может применяться сразу к нескольким сервлетам, – для этого, просто надо повторить тег в теге ко всем необходимым серлетам)

Несколько фильтров также можно применять к одному сервлету. В таком случае, они будут применяться по очереди, цепочкой, в том порядке, в котором они занесены в дескриптор развертывания.

Для применения фильтра сразу к нескольким сервлетам по принципу URL, необходимо дополнить тег фильтром

Классы

интерфейс javax.servlet.filter

init() – В интерфейс передается объект FilterConfig
Сигнатура: init(FilterConfig filterConfig);
По аналогии с методом init() сервлета, сюда может передаваться информация из дескриптора развертывания. Эту информацию также принято тут же записывать в одноименную объектную переменную объекта filter.

doFilter() – Как и DoGet() DoPost() или Service()

Сигнатура:

аргумент FilterChain – это объект, который означает следующий по списку фильтр или сервлет(если фильтров больше нет), в зависимости от данных дескриптора сервлетов.

В этом методе можно добавить атрибуты в Request, или дописать в объект Writer с помощью PrintWriter()

destroy() – аналогичен одноименному методу класса Servlet

интерфейс FilterChain

интерфейс имеет один единственный метод

интерфейс FilterConfig

getFilterName();
getInitParameter();
getInitParameterNames();
getServletContext();

LEAVE A COMMENT