Java中的监听器

1、概念

Servlet中的listener的作用是通过监听一些事件的发生,listener在事件发生前后可以做一些必要的处理。

2、原理

简单理解就是事件源生成事件并将其发送至一个或多个监听器,监听器简单地等待,直到它收到一个事件。一旦事件被接受,监听器将处理这些事件并进行一些处理。listner监听的主要事件抽象的理解包括三种:ServletContextEvent、ServletRequestEvent、 HttpSessionEvent。


3、八种监听器

ServletContextEvent对Servlet上下文进行监听

监听器

监听事件

相关方法

ServletContextListener

ServletContextEvent

contextDestroyed(ServletContextEvent sce)

ServletContext对象销毁时触发

(容器销毁时销毁ServletContext对象)

contextInitialized(ServletContextEvent sce)

ServletContext对象创建时触发

(容器加载时创建ServletContext对象)

ServletContextAttributeListener

ServletContextAttributeEvent (继承

ServletContextEvent)

attributeAdded(ServletContextAttributeEvent event)

ServletContext对象添加属性时触发

request.getSession().getServletContext().setAttribute("person1","Jim");

attributeRemoved(ServletContextAttributeEvent event)

ServletContext对象移除属性时触发

request.getSession().getServletContext().removeAttribute("person1");

attributeReplaced(ServletContextAttributeEvent event)

ServletContext对象重新设定属性值时触发

request.getSession().getServletContext().setAttribute("person1","Green");

request.getSession().getServletContext().setAttribute("person1","Green1");

ServletRequestEvent对客户端请求进行监听

监听器

针对事件

相关方法

ServletRequest

ListenerServletRequestEvent

requestInitialized(ServletRequestEvent sre) 客户端请求发出时触发

requestDestroyed(ServletRequestEvent sre) 客户端请求结束时触发

ServletRequestAttributeListener

ServletRequestAttributeEvent (继承

ServletRequestEvent)

attributeAdded(ServletRequestAttributeEvent srae)

客户端请求对象添加属性时触发(

request.setAttribute("person1","Jim");

attributeRemoved(ServletRequestAttributeEvent srae)

客户端请求对象移除属性时触发(

request.removeAttribute("person1");

attributeReplaced(ServletRequestAttributeEvent srae)

客户端请求对象重新设定属性值时触发(

request.setAttribute("person1","Green");

request.setAttribute("person1","Green1");

ServletRequestEvent对Http会话监听

监听器

监听事件

相关方法

HttpSessionListener

HttpSessionEvent

sessionCreated(HttpSessionEvent se) session对象创建时发生,即浏览器页面打开时

sessionDestroyed(HttpSessionEvent se) session对象销毁时触发,即浏览器关闭或session过期

HttpSessionAttributeListener

HttpSessionBindingEvent (继承

HttpSessionEvent)

attributeAdded(HttpSessionBindingEvent event)

session对象添加属性时触发(

session.setAttribute("person1","Jim");

attributeRemoved(HttpSessionBindingEvent event)

客户端请求对象移除属性时触发(

session.removeAttribute("person1");

attributeReplaced(HttpSessionBindingEvent event)

session对象重新设定属性值时触发(

session.setAttribute("person1","Green");

session.setAttribute("person1","Green1");

HttpSessionBindingListener(

这个listener是一个比较特殊的listener,它不需要在web.xml中进行配置。

此listener需要存放于session中的对象实现此接口,才能被响应。

HttpSessionBindingEvent (继承

HttpSessionEvent)

valueBound(HttpSessionBindingEvent event) 此方法通过HttpSession的void setAttribute(String name, Object object)被调用。其中object需要实现HttpSessionBindingListener接口。

valueUnbound(HttpSessionBindingEvent event) 此方法通过HttpSession的void removeAttribute(String name)或者HttpSession失效时被调用。其中nam对应的object需要实现HttpSessionBindingListener接口。

HttpSessionActivationListener (

这个接口一般和Servlet容器的集群有关系,它监听的是同一个session转移至不同的JVM的事件。)

HttpSessionEvent

sessionDidActivate(HttpSessionEvent se) session对象已经变成有效的状态的时触发

sessionWillPassivate(HttpSessionEvent se) session对象将要变成无效状态的时触发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值