1.什么是Listener
监听器就像老板的秘书,那个秘书就是活的监听器,时时监听着老板,当老板发生一些事情的时候,秘书就会有相应的措施。比如老板口渴了,秘书就会去端茶;比如老板要提提神,秘书就会泡一杯咖啡等。
2.介绍java的几种常用的监听器
(1)实现ServletRequestListener接口,监听request(需要在web.xml中配置)
/**
* 当request对象被销毁的时候,容器就会自动去
* 调用这个监听器的requestDestroyed,产生一个事件对象ServletRequestEvent
*/
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("request被销毁");
}
/**
* 当request对象被创建的时候,容器就会自动去
* 调用这个监听器的requestInitialized,产生一个事件对象ServletRequestEvent*/
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("request被创建");
}
配置:
<listener>
<listener-class>com.accp.RequestListener</listener-class>
</listener>
(2)实现HttpSessionListener接口,监听session (需要在web.xml中配置)
/**
* 当session被创建的时候被调用,产生一个事件对象HttpSessionEvent*/
public void sessionCreated(HttpSessionEvent se) { }
/**
* 当session被销毁的时候被调用,产生一个事件对象HttpSessionEvent */
public void sessionCreated(HttpSessionEvent se) { }
配置:
<listener>
<listener-class>com.accp.SessiontListener</listener-class>
</listener>
(3)实现ServletContextListener接口,监听ServletContext(需要在web.xml中配置)
/**
* 当ServletContext被销毁的时候,容器就会自动去
* 调用这个监听器的contextDestroyed,产生一个事件对象ServletContextEvent
*/
public void contextDestroyed(ServletContextEvent sce) { }
/**
* 当ServletContext被创建的时候,容器就会自动去
* 调用这个监听器的contextDestroyed,产生一个事件对象ServletContextEvent*/
public void contextInitialized(ServletContextEvent sce) { }
配置:
<listener>
<listener-class>com.accp.ContextListener</listener-class>
</listener>
(4)实现SessionBindingListener接口,监听Session设值和取值(不需要在web.xml中配置)
/**
* 当向Session里面设值的时候,容器调用此方法,生产一个事件对象 */
public void valueBound(HttpSessionBindingEvent event) { }
/**
* 当向Session里面移除值的时候,容器调用此方法,生产一个事件对象 */
public void valueUnbound(HttpSessionBindingEvent event) { }
哪个类的对象需要监听,就让那个类实现该接口
3.应用
应用一
使用 ServletRequestListener ,HttpSessionListener , ServletContextListener
统计访问量,在线人数,请求次数
应用二
使用SessionBindingListener做购物车:
HttpSessionBindingListener只监听制定的session
HttpSessionListener:监听处理所有的session
标签:第四课,调用,java,对象,void,监听,监听器,public From: https://www.cnblogs.com/xmxit/p/16851546.html