Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web-programmirovanie_uchebnoe_posobie.pdf
Скачиваний:
95
Добавлен:
09.02.2015
Размер:
4.9 Mб
Скачать

Учебное пособие по web-программированию (2013)

javax.servlet.http.HttpSessionListener:

public void sessionCreated(HttpSessionEvent se)

public void sessionDestroyed(HttpSessionEvent se)

Подробнее можно ознакомиться по адресу: http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpSessionListener.html

Пример слушателя сессии приведён на рисунке 4.7.

Рисунок 4.7.

Дополнительную информацию можно получить по адресу: http://www.tutorialspoint.com/servlets/servlets-session-tracking.htm

Тема 5. Фильтры и взаимодействие сервлетов

Основы построения фильтров, API, настройка, управление запросом пользователя и ответом сервлета или JSP-страницы. Систематизация знаний о взаимодействии сервлетов.

Фильтр является прослойкой между клиентом и сервлетом. Он может вносить изменения как в запросы клиента, так и в ответы сервлета. Обобщённая схема работы фильтра приведена на рисунке 5.1. При этом важно, что при необходимости можно использовать цепочку фильтров.

-25-

Учебное пособие по web-программированию (2013)

Рисунок 5.1.

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

Фильтры аутентификации

Фильтры журналирования и аудита

Фильтры преобразования изображений

Фильтры сжатия данных (рисунок 5.2)

Фильтры шифрации

ит. п.

Рисунок 5.2.

Типичный фильтр получает запрос от клиента (web-браузера), обрабатывает его и передаёт сервлету, затем получает ответ от сервлета, обрабатывает его и возвращает результат клиенту.

Основные интерфейсы по работе с фильтрами:

javax.servlet.Filter

javax.servlet.FilterConfig

javax.servlet.FilterChain

Обратите внимание, что в данном курсе мы в основном рассматриваем

интерфейсы из пакета javax.servlet.*. Дело в том, что реализацией данных интерфейсов занимается сервер. В нашем случае — классы Apache Tomcat.

Итак, основные методы javax.servlet.Filter:

public void init(FilterConfig filterConfig)

-инициализация фильтра

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

-исполнение фильтра

public void destroy()

-уничтожение фильтра

Подробнее можно ознакомиться по адресу:

-26-

Учебное пособие по web-программированию (2013)

http://docs.oracle.com/javaee/6/api/javax/servlet/Filter.html

Основные методы javax.servlet.FilterConfig:

public String getFilterName()

-получение имени фильтра

public String getInitParameter(String name)

-получение инициализационного параметра фильтра

public Enumeration getInitParameterNames()

-получение всех параметров инициализации

public ServletContext getServletContext()

-получение контекста сервлета

Подробнее можно ознакомиться по адресу: http://docs.oracle.com/javaee/6/api/javax/servlet/FilterConfig.html

Настройка фильтров осуществляется в дескрипторе развёртывания web.xml. Основные теги по описанию фильтра:

<icon>

-иконка фильтра при отображении в сервере

<filter-name>

-имя фильтра (обязательный параметр)

<display-name>

-отображаемое имя фильтра

<description>

-описание фильтра

<filter-class>

-полный путь к классу фильтра (обязательный параметр)

<init-param>

-параметр инициализации

Основные теги по «маппингу» фильтра:

<filter-name>

-название фильтра (должно совпасть с названием при описании фильтра)

<url-pattern>

-шаблон URL, при котором будет вызываться фильтр (не имеет смысла, если указан параметр servlet-name)

<servlet-name>

-сервлет, для которого должен вызваться фильтр

Пример настройки фильтра в дескрипторе развёртывания приведён на рисунке 5.3. В данном случае в описание и маппинге указано название NewFilter, указан путь класса фильтра и явно указано для какого сервлета данный фильтр должен срабатывать.

-27-

Учебное пособие по web-программированию (2013)

Рисунок 5.3.

Цепочка фильтров описывается в дескрипторе развёртывания web.xml. Фильтры описываются в той последовательности, в которой они должны вызываться: сначала теги filter, затем теги filter-mapping. Фильтры по описанию URL/сервлета должны быть применимы к одному и тому же сервлету.

Для упрощения работы с запросом и ответом NetBeans автоматически создаёт классы-обёртки для запроса и ответа. В методе исполнения фильтра сначала создаются экземпляры классов-обёрток, упрощающих обработку (рисунок 5.4):

RequestWrapper wrappedRequest =

new RequestWrapper((HttpServletRequest) request); ResponseWrapper wrappedResponse =

new ResponseWrapper((HttpServletResponse) response);

Рисунок 5.4.

При этом необходимо понимать, что фильтры могут помещаться при любом взаимодействии на сервере. Систематизируем знания о вариантах взаимодействия:

-28-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]