在Java EE中,ServletContext、HttpSession、HttpServletRequest使得Java对象在浏览器中直接传播成为可能,与这三大对象相关的监听器在实际编程中也是有很大用处。
接触过Java AWT、Java Swing编程的都知道监听器其实就是某个事件触发之后的一个方法回调。基本上监听器也是AOP的编程思想的一个体现,Java EE中有八个规定的监听器,用来监听ServletContext、HttpSession、HttpServletRequest这三个对象的创建和销毁,以及在调用setAttribute(String name, Object value)、removeAttribute(String name)这些方法。
ServeltContextListener
这个接口的原型如下:
public interface ServletContextListener
{
public void contextCreated(ServketContextEvent event);
public void destroyContext(ServletContextEvent event);
}
其中contextCreated会再WEB容器装入WEB程序时进行调用,而contextDestroyed会再WEB容器卸载程序时进行调用。
该接口的使用案例,在Spring整合进WEB程序中有体现,Spring的核心IOC容器会再ServletContext初始化后,进行创建IOC容器,如果你想要在ServletContext初始化后做点什么,那么可以实现该监听器。
HttpSessionListener
这个接口的原型如下:
public interface HttpSessionListener
{
public void sessionCreated(HttpSessionEvent event);
public void sessionDestroyed(HttpSessionEvent event);
}
其中,当WEB容器创建HttpSession对象后,会调用sessionCreated方法,利用这个方法可以进行网站的在线人数统计(按照会话进行统计)。当HttpSession对象被销毁后,会调用sessionDestroyed方法。
ServletRequestListener
这个接口的原型如下:
public interface ServletRequestListener
{
public void requestCreated(ServletRequestEvent event);
public void requestDestroyed(ServletRequestEvent event);
}
其中,当WEB容器创建好HttpServletRequest对象后,会调用requestCreated方法;当HttpServletRequest对象被销毁后,会调用requestDestroyed方法。
ServletContextAttributeListener、HttpSessionAttributeListener、ServletContextAttributeListener
ServletContextAttributeListener、HttpSessionAttributeListener、ServletContextAttributeListener这三个监听器是用来监听属性的添加与删除的,它们的大致接口原型如下:
public XxxAttributeListener
{
public void attributeAdded(xxxAttributeEvent event);
public void attributeReplaced(xxxAttributeEvent event);
public void attributeRemoved(xxxAttributeEvent event);
}
上述六种基本的监听器,是Java EE监听器的基础。