一、监听器
监听器在生活和程序中被广泛的应用。生活中,烟雾报警器监听到火苗 燃烧,会发出警报并打开水管,喷水灭火;家用摄像头监听到有人 走动时,会发送视频片段到你的手机。程序中,无论是使用java,C++,还是html编写的用户界面,当按钮监听到鼠标 点击时,会做出某些动作。
从上面描述中,我们可以发现监听器的一些特征:
监听器,监听到对象发生某事件会执行相应任务。
二、JavaEE的监听器及监听事件
JavaEE 内置的监听器接口有6个:
- ServletContextListener 监听对象创建(web启动并加载应用)和销毁(web容器停止)
- HttpSessionListener 监听对象的创建(发起客户端请求)和销毁(30分钟过期或者手动关闭)
- ServletRequestListener 监听对象(发起请求)的创建和销毁(结束请求)
- ServletContextAttributeListener 监听全局属性操作(增、删、改)
- HttpSessionAttributeListener 监听用户绘画属性操作
- ServletRequestAttributeListener 监听请求属性操作
监听器接口 | 事件 | 触发时机 | 执行任务 |
---|---|---|---|
ServletContextListener | 对象创建 | web启动并加载应用 | contextInitialized(ServletContextEvent sce) |
· | 对象销毁 | web容器停止 | contextDestroyed(ServletContextEvent sce) |
HttpSessionListener | 对象创建 | web服务器接收到请求 | sessionCreated(HttpSessionEvent se) |
· | 对象销毁 | 30分钟过期或者手动销毁 | sessionDestroyed(HttpSessionEvent se) |
ServletRequestListener | 对象创建 | web服务器接收到请求 | requestInitialized(ServletRequestEvent sre) |
· | 对象销毁 | web服务器处理完请求 | requestDestroyed(ServletRequestEvent sre) |
ServletContextAttributeListener | 增添属性 | attributeAdded(ServletContextAttributeEvent event) | |
· | 删除属性 | ||
· | 修改属性,即增添点属性名已存在 | ||
HttpSessionAttributeListener | 钝化 | sessionWillPassivate(HttpSessionEvent se) | |
ServletRequestAttributeListener | 增添属性 | attributeAdded(ServletRequestAttributeEvent srae) | |
· | 删除属性 | attributeRemoved(ServletRequestAttributeEvent srae) | |
· | 修改属性 | attributeReplaced(ServletRequestAttributeEvent srae) |
三、应用
Web静态数据预加载
如下图所示,这些导航栏中的标题和链接都不是“写死”在网页中的。都是要从数据库中查询获得的。我们可以使用ServletContextListener监听器,在web应用初始化的时候加载这些数据。