TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #607 3.85K
🤔 Как уведомить объект в сессии, что сессия недействительна или закончилась?

Для уведомления объекта в сессии о том, что сессия недействительна или закончилась, 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>


Ставь 👍 и забирай 📚 Базу знаний
  • ❤ 1
More from @easy_java_ru
  1. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  2. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  3. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  4. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  5. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
  6. Oct 7, 2026🤔 К какой категории сущности относится Primary Key? Primary Key (первичный ключ) в базах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →