Топ-100Слушатели (Listeners) в Java сервлетах - CodOrbits
LogoCodOrbits

Раздел: Servlets

Познакомьтесь с сервлетами Java: создание динамических веб-страниц и работа с HTTP-запросами и ответами.

Все разделы
Иконка Servlets

Слушатели (Listeners) в Java сервлетах

Last updated: 10 мая 2025 г.

Часто бывает нужно проследить выполнение каких-то действий в сессии или контексте и т.д.

Для этого используются слушатели.

Например, для прослушивания событий происходящих с аттрибутами реализуется интерфейс ServletContextAttributeListener.

В примере слушателя ниже определены методы, которые будут срабатывать когда в контекст добавляются, удаляются или заменяются аттрибуты. Мы будем уведомлены о событиях с аттрибутами.

Можно, например, отслеживать точное время когда аттрибут был удален, добавлен или изменен или можно инициализировать какие-то данные при каких-то событиях, иногда это может пригодиться.

Интерфейсов слушателей довольно много. Для примера рассмотрим ServletContextAttributeListener.

Пример программы:

1import javax.servlet.ServletContextAttributeEvent;
2import javax.servlet.ServletContextAttributeListener;
3import javax.servlet.annotation.*;
4
5@WebListener //пометим что класс является слушателем
6public class ServletContextAttributeListenerExample
7    implements ServletContextAttributeListener{
8
9    //Этот метод вызывается
10    //при добавлении атрибута в объект ServletContext.
11    public void attributeAdded(ServletContextAttributeEvent scab){
12        System.out.println("An attribute was added to the "
13            + "ServletContext object");
14    }
15
16    //Этот метод вызывается, когда атрибут удаляется
17    //из объекта ServletContext.
18    public void attributeRemoved(ServletContextAttributeEvent scab){
19        System.out.println("An attribute was removed from "
20            + "the ServletContext object");
21    }
22
23    //Этот метод вызывается при замене атрибута
24    //в объекте ServletContext.
25    public void attributeReplaced(ServletContextAttributeEvent scab){
26        System.out.println("An attribute was replaced in "
27            + "the ServletContext object");
28    }
29}

Сервлет вызывающий метод слушателя

Ниже простейший сервлет, в котором просто добавляется аттрибут в контекст. При добавлении аттрибута должен будет вызваться переопределенный нами метод attributeAdded из класса определенного нами выше.

Пример программы:

1import java.util.*;
2import java.io.IOException;
3import java.io.PrintWriter;
4
5import javax.servlet.*;
6import javax.servlet.http.*;
7import javax.servlet.annotation.*;
8
9@WebServlet("/listenerservlet")
10public class MyServlet extends HttpServlet {
11    public void doGet(HttpServletRequest request,
12                      HttpServletResponse response)
13            throws ServletException, IOException {
14        PrintWriter pw = response.getWriter();
15        ServletContext scont = request.getServletContext();
16        scont.setAttribute("attrName", "attrVal");
17    }
18}

Проверка работы слушателя

Скомпилируем файл сервлета и файл слушателя и в адресной строке перейдем по адресу /listenerservlet.

В консоли запущенного Tomcat можно увидеть сообщение из метода attributeAdded, что значит что слушатель работает.


Следующие уроки

Оптимизация сервлетов с AsyncContext

11
мин.

Similar Articles Icon
Divider

Азы работы с Java Server Pages (JSP)

17
мин.

Similar Articles Icon
Divider

Комментарии в JSP

11
мин.

Similar Articles Icon