Для уведомления объекта в сессии о том, что сессия недействительна или закончилась, Java Servlet API предоставляет интерфейс
HttpSessionBindingListener и HttpSessionListener.🚩Использование
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 added to session");
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
System.out.println("Object removed from session or session invalidated");
}
}
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SessionServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
MySessionObject obj = new MySessionObject();
session.setAttribute("myObject", obj);
}
}
🚩Использование
HttpSessionListener:Этот интерфейс позволяет сервлету получать уведомления о событиях создания и уничтожения сессии.
🟠Методы:
sessionCreated(HttpSessionEvent se): Вызывается, когда создается новая сессия.sessionDestroyed(HttpSessionEvent se): Вызывается, когда сессия становится недействительной.import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
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());
HttpSession session = se.getSession();
MySessionObject obj = (MySessionObject) session.getAttribute("myObject");
if (obj != null) {
obj.cleanup();
}
}
}
Регистрация
HttpSessionListener в web.xml:<listener>
<listener-class>com.example.MySessionListener</listener-class>
</listener>
Ставь 👍 и забирай 📚 Базу знаний