Servlet Filter

Сървлет филтрите са Java класове, които могат да бъдат използвани в Java web програмирането за следните цели :

  • За прихващане на заявки от клиент преди да му се даде достъп до ресурсите в системата;

  • За манипулация на отговорите от сървъра преди те да бъдат изпратени обратно на клиента.

Видове филтри:

  • филтри за аутентикация;

  • филтри за компресия на данни;

  • филтри за кодиране и декодиране;

  • филтри, които управляват достъпа до ресурси;

  • филтри за преобразуване на изображения;

  • филтри за управление на достъпа до системата;

  • верига от филтри за MIME - TYPE;

  • Филтри за токенайзер (обработка на стрингови низове с цел разделяне на поднизове);

  • XSL / Т филтри, които трансформират XML съдържание. За да станат активни и за да се окаже спрямо кой ресурс от уеб приложението те ще работят

Деклариране на филтри:

  • Единият начин за декларация е запис в дескриптора на приложението - web.xml, където се асоциират с дадено сървлет име и URL адрес.

  • Вторият начин за декларация е чрез анотацията @WebFilter

Когато уеб контейнера стартира уеб приложението, той създава инстанция на всеки филтър, който е деклариран в дескриптора. Филтрите се изпълняват в реда, в който са декларирани.

Методи на сървлет филтър

Филтърът е Java клас, който реализира интерфейса javax.servlet.Filter.

Интерфейсът javax.servlet.Filter дефинира методите:

  • public void doFilter (ServletRequest, ServletResponse, FilterChain) - Този метод се извиква от контейнера всеки път при обработка на request/response, в който се изисква достъп до ресурс от клиент;

  • public void init(FilterConfig filterConfig) - Този метод се извиква от уеб контейнера, за да се окаже на филтъра, че е вече активен;

  • public void destroy() - Този метод се извиква от уеб контейнера, за да се окаже на филтъра, че вече не е активен.

Пример:

Servlet филтър, отпечатващ IP адреса на клиенти и текущия час дата:

Анотацията @WebFilter декларира класа, който го съдържа, като сървлет филтър. Параметърът на анотацията - urlPatterns = "/CheckBox") оказва името на сървлета, за който ще бъде приложен филтъра. В зависимост от броя и типа параметри на анотацията има различни случаи на използване на филтрите:

  • филтър работещ за няколко ресурса

  • филтър с инициализиращи параметри

  • филтър с допълнителна информация

  • филтър с оказване типа на диспечера на обработката

Last updated

Was this helpful?