撰写过AWT或Swing的Java程序设计人员对于Listener与Event应该并不陌生,实现 Listener的类可以在特定事件发生时,调用特定的方法来对事件进行回应,在编写JSP/Servlet应用程序时,也有类似的Listener接 口与Event类,所不同的是在AWT或 Swing中是向特定组件加入Listener,而在JSP/Servlet中则是在web.xml中注册Listener,由Container在特定事件发生时调用特定的实现Listener类。
至JSP 2.0/Servlet 2.4为止,共有八个Listener接口,以及六个Event类。
ServletContextListener接口有两个必须实现的方法,contextInitialized()与 contextDestroyed(),它们接收ServletContextEvent事件,在Container载入Web应用程序时(例如启动 Container之后),会调用contextInitialized(),而当容器移除Web应用程序时,会调用contextDestroyed ()方法。
ServletContextAttributeListener接口有三个必须实现的方法,attributeAdded()、 attributeReplaced()、attributeRemoved(),它们接收ServletContextAttributeEvent事件,若有对象加入为application(ServletContext)对象的属性,则会调用attributeAdded(),同理在置换属性与移除属性时,会分别调用attributeReplaced()、attributeRemoved()。
HttpSessionListener接口有两个必须实现的方法,sessionCreated()与sessionDestroyed (),它们接收HttpSessionEvent事件,与ServletContextListener接口类似,在session (HttpSession)对象建立或被消灭时,会分别调用这两个方法。
HttpSessionAttributeListener接口有三个必须实现的方法,attributeAdded()、 attributeReplaced()、attributeRemoved(),它们接收HttpSessionBindingEvent事件,与 ServletContextAttributeListener接口类似,若有对象加入为session(HttpSession)对象的属性,则会呼叫attributeAdded(),同理在置换属性与移除属性时,会分别调用attributeReplaced()、 attributeRemoved()。
HttpSessionActivationListener接口有两个必须实现的方法,sessionDidActivate()与 sessionWillPassivate(),它们接收HttpSessionEvent,Activate与Passivate是用于置换对象的动作,当session对象为了资源利用或负载平衡等原因而必须暂时储存至硬碟或其它储存器时(透过对象序列化),所作的动作称之为Passivate,而硬盘或储存器上的session对象重新载入JVM时所采的动作称之为Activate,所以容易理解的,sessionDidActivate()与 sessionWillPassivate()分别于Activeate后与将Passivate前调用。
ServletRequestListener接口有两个必须实现的方法,requestInitialized()与 requestDestroyed(),它们接收RequestEvent事件,与ServletContextListener接口类似,在 request(HttpServletRequest)对象建立或被消灭时,会分别调用这两个方法。
ServletRequestAttributeListener接口有三个必须实现的方法,attributeAdded()、 attributeReplaced()、attributeRemoved(),它们接收HttpSessionBindingEvent事件,与 ServletContextAttributeListener接口类似,若有对象加入为request(HttpServletRequest)对象的属性,则会调用attributeAdded(),同理在置换属性与移除属性时,会分别调用attributeReplaced()、 attributeRemoved()。
实现以上这几个接口的类,必须在web.xml中向容器注册,容器才会在对应的事件发生时调用对应的类,例如:
<listener>
<listener-class>
demo.servlet.listener.CustomServletContextListener
</listener-class>
</listener>
另外还有一个HttpSessionBindingListener接口,它使用的方法不同,拥有两个必须实现的方法, valueBound()与valueUnbound(),接收的参数为HttpSessionBindingEvent,实现 HttpSessionBindingListener接口的类,其实例如果被加入至session(HttpSession)对象的属性中,则会调用 valueBound(),如果被从session(HttpSession)对象的属性中移除,则会调用valueUnbound(),实现 HttpSessionBindingListener接口的类不需在web.xml中设定。
分享到:
相关推荐
此外,`event_listener.jsx` 可能会使用到其他 ExtendScript 对象和方法,比如 `app.documents` 集合来遍历所有打开的文档,`event` 对象来获取与触发事件相关的详细信息,或者 `dialogs` 来与用户进行交互。...
EventListener 是一个轻量级的库,专为实现类之间的通信机制而设计,特别是用来传递广播信号。在软件开发中,特别是在面向对象编程中,不同组件之间的通信是至关重要的。EventListener 提供了一种简单且灵活的方式来...
event_listener.jsx PS事件监听脚本 1、修改脚本监听数据本地化语言显示 ---0.02-01 2、函数增加注释当前历史记录名称 ---0.02-02 https://blog.csdn.net/greless/article/details/105811358
Event Listener Error(解决方案).md
在Spring Boot应用中,整合Listener主要是为了监听应用的生命周期事件,例如在应用启动或关闭时执行特定的操作。这里我们讨论两种整合Listener的方式。 ### 方式一:通过注解扫描完成Listener组件的注册 1. **创建...
"debug-event-listener.rar_The Listener"这一主题关注的是如何利用Debug对象及其监听器功能来优化和理解代码执行的过程。在这个压缩包中,我们有两个核心文件:10.1.4-4.js和debug-event-listener.js,它们可能包含...
off (其中listener是 EventListener 的一个实例)而不必担心保存和传递事件名称和函数。 请参阅下面的比较。 先决条件 使用 npm 安装它,将其保存为依赖项。 npm i evt-listener --save 两个示例共享相同的事件...
事件监听器通知异步任务或线程。...use event_listener :: Event;let flag = Arc :: new (AtomicBool :: new ( false ));let event = Arc :: new (Event :: new ());// Spawn a thread that will se
supervisor-event-listener Supervisor事件通知, 支持邮件, Slack, WebHook 简介 Supervisor是*nix环境下的进程管理工具, 可以把前台进程转换为守护进程, 当进程异常退出时自动重启. supervisor-event-listener监听...
void RegisterListener(const std::string& eventType, std::function(const Event&)> listener) { listeners_[eventType].push_back(listener); } // 触发事件 void TriggerEvent(const Event& event) { ...
这个类需要重写两个方法:requestInitialized(ServletRequestEvent event)和requestDestroyed(ServletRequestEvent event)。前者在每次请求开始时被调用,后者在请求结束时调用。 ```java public class ...
IE8-EventListener IE8的Polyfill 我怎么才能得到它? IE8-EventListener可通过npm获得,并可以使用以下命令进行安装: npm install ie8-eventlistener 它是什么? IE8-EventListener努力向IE8添加完全的...
KDispatcher is a Kotlin EventDispatcher This is light-weight event dispatcher based on KOTLIN priority: Int?...eventListener - function listener for event priority - the priority to sort ca
本文主要讲述了JavaScript中的HTML DOM EventListener功能与用法,通过实例分析深入探讨了事件监听的相关概念、用法、注意事项以及事件冒泡和捕获的过程。EventListener是JavaScript中用于处理事件的关键接口,它...
$ npm install kktix-event-listener 用法 var kktixEventListener = require ( 'kktix-event-listener' ) ; kktixEventListener ( 'http://reactjs.kktix.cc/events/react9' ) ; //=> 命令行界面 $ npm install -g ...
这是在 c++ 中实现的 EventListener(就像在 c# 中一样)。我正在使用一些 c++11 特性(比如 final),但是如果你愿意,你可以很容易地删除它们。 检查维基页面以查看使用情况。 需要做的:线程安全; 安全处置调用...
监听器通过实现`ApplicationListener`接口或使用`@EventListener`注解来接收事件。 2. **创建和发布事件** 创建自定义事件类,继承自`ApplicationEvent`,然后在需要触发事件的地方,实例化这个类并调用`...
在Android开发中,Listener接口是实现用户交互和事件处理的关键组件。它们允许应用程序对用户的操作进行响应,如点击按钮、滑动屏幕等。本篇文章将深入探讨Android中Listener的多种实现方式,帮助开发者更好地理解和...
被动事件监听器(Passive Event Listeners)是现代Web开发中的一个重要优化策略,尤其是在构建高性能的Web应用程序时。这个概念的引入主要是为了提高页面的滚动性能和响应速度,特别是对于移动设备上的触摸事件。...