💬 Спросят с вероятностью 6%
Предоставляется возможность уведомления объектов, находящихся в сессии, о том, что сессия становится недействительной или заканчивается. Для этого объекты могут реализовывать интерфейс
HttpSessionBindingListener или HttpSessionListener.Использование HttpSessionBindingListener
Позволяет объектам узнавать, когда они добавляются или удаляются из сессии.
Методы интерфейса HttpSessionBindingListener
➕
valueBound(HttpSessionBindingEvent event): Вызывается, когда объект добавляется в сессию.➕
valueUnbound(HttpSessionBindingEvent event): Вызывается, когда объект удаляется из сессии или когда сессия становится недействительной.import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
public class MySessionObject implements HttpSessionBindingListener {
@Override
public void valueBound(HttpSessionBindingEvent event) {
// Код, который выполняется при добавлении объекта в сессию
System.out.println("Object bound to session: " + event.getSession().getId());
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
// Код, который выполняется при удалении объекта из сессии или при завершении сессии
System.out.println("Object unbound from session: " + event.getSession().getId());
}
}
Добавление объекта в сессию
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/addObject")
public class AddObjectServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
MySessionObject myObject = new MySessionObject();
session.setAttribute("myObject", myObject);
response.getWriter().println("Object added to session.");
}
}
Использование HttpSessionListener
Позволяет отслеживать события создания и уничтожения сессии на уровне приложения.
Методы интерфейса HttpSessionListener
➕
sessionCreated(HttpSessionEvent se): Вызывается при создании сессии.➕
sessionDestroyed(HttpSessionEvent se): Вызывается при уничтожении сессии.import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class MySessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
// Код, который выполняется при создании новой сессии
System.out.println("Session created: " + se.getSession().getId());
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
// Код, который выполняется при завершении сессии
System.out.println("Session destroyed: " + se.getSession().getId());
}
}
Регистрация слушателей
Если вы не используете аннотации, вы можете зарегистрировать слушателей в файле
web.xml.<web-app ...>
<listener>
<listener-class>com.example.MySessionListener</listener-class>
</listener>
</web-app>
Чтобы уведомить объект в сессии о том, что сессия стала недействительной или закончилась, объект может реализовывать интерфейс
HttpSessionBindingListener. Для отслеживания событий создания и уничтожения сессий на уровне приложения используется интерфейс HttpSessionListener. Оба интерфейса позволяют выполнять необходимые действия при изменении состояния сессий и управлять ресурсами эффективно.🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых