Назначение
Определяет зависимость вида "один ко многим" между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.
Использование шаблона в JDK
(примеры частично взяты с этого ресурса)
Servlet API:
- javax.servlet.ServletContextListener: contextInitialized(ServletContextEvent) - вызывается в момент старта приложения, contextDestroyed(ServletContextEvent sce) - вызывается в момент прекращения работы приложения.
- javax.servlet.ServletContextAttributesListener:
attributeAdded(ServletContextAttributeEvent)
attributeRemoved(ServletContextAttributeEvent)
attributeReplaced(ServletContextAttributeEvent)
- javax.servlet.http.HttpSessionListener: sessionCreated(HttpSessionEvent) оповещается при создании новой сессии, sessionDestroyed(HttpSessionEvent) оповещается при удалении сессии.
- javax.servlet.http.HttpSessionAttributesListener: attributeAdded(HttpSessionBindingEvent)
attributeRemoved(HttpSessionBindingEvent)
attributeReplaced(HttpSessionBindingEvent)
- javax.servlet.ServletRequestListener: requestInitialized(ServletRequestEvent) оповещается при "входе" запроса на сайт, requestDestroyed(ServletRequestEvent) оповещается при "выходе" запроса с сайта.
- javax.servlet.ServletRequestAttributeListener:
attributeAdded(ServletRequestAttributeEvent)
attributeRemoved(ServletRequestAttributeEvent)
attributeReplaced(ServletRequestAttributeEvent)
- javax.servlet.AsyncListener
onComplete(AsyncEvent)
onError(AsyncEvent)
onStartAsync(AsyncEvent)
onTimeout(AsyncEvent)
- javax.servlet.http.Http.HttpSessionActivationListener
sessionDidActivate(HttpSessionEvent)
sessionWillPassivate(HttpSessionEvent)
- javax.servlet.http.HttpSessionBindingListener
valueBound(HttpSessionBindingEvent)
valueUnbound(HttpSessionBindingEvent)
----------------------------------------------------------------
Декларативная регистрация "наблюдателя" в web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<listener>
<listener-class>
com.listeners.MyContextListener
</listener-class>
</listener>
</web-app>
Определяет зависимость вида "один ко многим" между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.
Использование шаблона в JDK
(примеры частично взяты с этого ресурса)
Servlet API:
- javax.servlet.ServletContextListener: contextInitialized(ServletContextEvent) - вызывается в момент старта приложения, contextDestroyed(ServletContextEvent sce) - вызывается в момент прекращения работы приложения.
- javax.servlet.ServletContextAttributesListener:
attributeAdded(ServletContextAttributeEvent)
attributeRemoved(ServletContextAttributeEvent)
attributeReplaced(ServletContextAttributeEvent)
- javax.servlet.http.HttpSessionListener: sessionCreated(HttpSessionEvent) оповещается при создании новой сессии, sessionDestroyed(HttpSessionEvent) оповещается при удалении сессии.
- javax.servlet.http.HttpSessionAttributesListener: attributeAdded(HttpSessionBindingEvent)
attributeRemoved(HttpSessionBindingEvent)
attributeReplaced(HttpSessionBindingEvent)
- javax.servlet.ServletRequestListener: requestInitialized(ServletRequestEvent) оповещается при "входе" запроса на сайт, requestDestroyed(ServletRequestEvent) оповещается при "выходе" запроса с сайта.
- javax.servlet.ServletRequestAttributeListener:
attributeAdded(ServletRequestAttributeEvent)
attributeRemoved(ServletRequestAttributeEvent)
attributeReplaced(ServletRequestAttributeEvent)
- javax.servlet.AsyncListener
onComplete(AsyncEvent)
onError(AsyncEvent)
onStartAsync(AsyncEvent)
onTimeout(AsyncEvent)
- javax.servlet.http.Http.HttpSessionActivationListener
sessionDidActivate(HttpSessionEvent)
sessionWillPassivate(HttpSessionEvent)
- javax.servlet.http.HttpSessionBindingListener
valueBound(HttpSessionBindingEvent)
valueUnbound(HttpSessionBindingEvent)
----------------------------------------------------------------
Декларативная регистрация "наблюдателя" в web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<listener>
<listener-class>
com.listeners.MyContextListener
</listener-class>
</listener>
</web-app>