[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-servlety-kak-uvedomit-obekt-v-sessii-chto-sessiya-nedeystvitelna-ili-zakonchilas":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},559,"kak-uvedomit-obekt-v-sessii-chto-sessiya-nedeystvitelna-ili-zakonchilas",13,"servlety","Сервлеты","🖧","Как уведомить объект в сессии, что сессия недействительна или закончилась","Для уведомления объекта об окончании или инвалидации сессии используется интерфейс `javax.servlet.http.HttpSessionBindingListener`. Объект, реализующий этот интерфейс, автоматически получает callback при добавлении в сессию и удалении из неё.\n\n```java\npublic class UserData implements HttpSessionBindingListener {\n\n    @Override\n    public void valueBound(HttpSessionBindingEvent event) {\n        \u002F\u002F Вызывается при session.setAttribute(\"user\", this)\n        \u002F\u002F Например: зарегистрировать пользователя как online\n    }\n\n    @Override\n    public void valueUnbound(HttpSessionBindingEvent event) {\n        \u002F\u002F Вызывается при session.removeAttribute(\"user\")\n        \u002F\u002F или при session.invalidate(), или при таймауте\n        \u002F\u002F Например: освободить ресурсы, пометить пользователя как offline\n    }\n}\n```\n\nВ отличие от `HttpSessionAttributeListener`, который регистрируется глобально через `web.xml` и отслеживает все атрибуты всех сессий, `HttpSessionBindingListener` реализуется самим объектом, который помещается в сессию. Это позволяет объекту управлять своим жизненным циклом в привязке к сессии.\n\n> **На собеседовании:** обязательно укажите разницу между `HttpSessionBindingListener` (реализуется объектом) и `HttpSessionAttributeListener` (глобальный, через `web.xml`). Это ключевой нюанс вопроса.","","middle",[15],"servlets",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Как уведомить объект в сессии, что сессия недействительна ил — Gymterview","Для уведомления объекта об окончании или инвалидации сессии используется интерфейс `javax.servlet.http.HttpSessionBindingListener`. Объект, реализующий этот инт","Для уведомления объекта об окончании или инвалидации сессии используется интерфейс `javax.servlet.http.HttpSessionBindin",[15,13],"Для уведомления объекта об окончании или инвалидации сессии используется интерфейс `javax.servlet.http.HttpSessionBindingListener`. Объект, реализующий этот интерфейс, автоматически получает callback при добавлении в сессию и удалении из неё.",true]