- •Тема 1. Разработка простейших веб-приложений
- •Тема 2. Взаимодействие с сервлетом
- •Тема 3. Контекст сервлета
- •Тема 4. Веб-сессия
- •Тема 5. Фильтры и взаимодействие сервлетов
- •Тема 6. Безопасность веб-приложений
- •Тема 7. Введение в JSP
- •Тема 8. Встроенные объекты JSP
- •Тема 9. Стандартные действия и JavaBeans
- •Тема 10. Выражения JSP Expression Language
- •Тема 11. JSP Standard Tag Library
- •Тема 12. Локализация веб-приложений
- •Тема 13. Настраиваемые теги JSP
- •Тема 14. Взаимодействие с БД в веб-приложениях
- •Тема 15. Запросы к БД
Учебное пособие по 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-