servlet listener简介

本文详细介绍了JSP/Servlet中的事件处理机制,包括八个Listener接口和六个Event类别,以及如何在web.xml中注册Listener以响应特定事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP/Servlet 中的事件处理写过AWTSwing程序的人一定对桌面程序的事件处理机制印象深刻:通过实现Listener接口的类可以在特定事件(Event)发生时,呼叫特定的方法来对事件进行响应。

其实我们在编写JSP/Servle程序时,也有类似的事件处理机制,所不同的是在JSP/Servlet中是在web.xml中注册Listener,由Container在特定事件发生时呼叫特定的实现Listener的类。

1. Servlet中的ListenerEvent:

JSP 2.0/Servlet 2.4中,共有八个Listener接口,六个Event类别。

l        ServletContextListener

[接口方法] contextInitialized() contextDestroyed()
[
接收事件] ServletContextEvent
[
触发场景] Container加载Web应用程序时(例如启动 Container之后),会呼叫contextInitialized(),而当容器移除Web应用程序时,会呼叫contextDestroyed ()方法。

l        ServletContextAttributeListener

[接口方法] attributeAdded() attributeReplaced()attributeRemoved()
[
接收事件] ServletContextAttributeEvent
[
触发场景] 若有对象加入为applicationServletContext)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced()attributeRemoved()

l        HttpSessionListener

[接口方法] sessionCreated()sessionDestroyed ()
[
接收事件] HttpSessionEvent
[
触发场景] sessionHttpSession)对象建立或被消灭时,会分别呼叫这两个方法。

l        HttpSessionAttributeListener

[接口方法] attributeAdded() attributeReplaced()attributeRemoved()
[
接收事件] HttpSessionBindingEvent
[
触发场景] 若有对象加入为sessionHttpSession)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced() attributeRemoved()

l        ServletRequestListener

[接口方法] requestInitialized() requestDestroyed()
[
接收事件] RequestEvent
[
触发场景] requestHttpServletRequest)对象建立或被消灭时,会分别呼叫这两个方法。

l        ServletRequestAttributeListener

[接口方法] attributeAdded() attributeReplaced()attributeRemoved()
[
接收事件] HttpSessionBindingEvent
[
触发场景] 若有对象加入为requestHttpServletRequest)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别呼叫attributeReplaced() attributeRemoved()

l        HttpSessionBindingListener

[接口方法] valueBound()valueUnbound()
[
接收事件] HttpSessionBindingEvent
[
触发场景] 实现HttpSessionBindingListener接口的类别,其实例如果被加入至sessionHttpSession)对象的属性中,则会呼叫 valueBound(),如果被从sessionHttpSession)对象的属性中移除,则会呼叫valueUnbound(),实现HttpSessionBindingListener接口的类别不需在web.xml中设定。

l        HttpSessionActivationListener

[接口方法] sessionDidActivate() sessionWillPassivate()
[
接收事件] HttpSessionEvent
[
触发场景] ActivatePassivate是用于置换对象的动作,当session对象为了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透过对象序列化),所作的动作称之为Passivate,而硬盘或储存器上的session对象重新加载JVM时所采的动作称之为Activate,所以容易理解的,sessionDidActivate() sessionWillPassivate()分别于Activeate后与将Passivate前呼叫。

2. 注册监听器

除了HttpSessionBindingListenerHttpSessionActivationListener,必须在web.xml中向容器注册,容器才会在对应的事件发生时呼叫对应的类别,如:

<listener>

<listener-class>

demo.servlet.listener.CustomServletContextListener

</listener-class>

</listener>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值