老韩- JavaWeb三大组件之监听器Listener
- 监听器Listener文档说明
- ServletContextListener监听器
- ServletContextAttributeListener监听器
- HttpSessionListener监听器
- HttpSessionAttributeListener监听器
- ServletRequestListener监听器
- 其它监听器
- ServletRequestAttributeListener
- HttpSessionBindingListener
- HttpSessionActivationListener
- Listener监听器是JavaWeb三大组件之一, JavaWeb三大组件分别是: Servlet程序, Listener监听器, Filter过滤器
- Listener是JavaEE的规范, 就是接口
- 监听器的作用是, 监听某种变化(一般就是 对象创建/销毁, 属性变化), 触发对应方法完成相应的任务
- JavaWeb中的监听器共八个, 目前最常用的是ServletContextListener
监听器Listener文档说明
- ServletContextListener(Interface), 用来感知ServletContext对象的创建和销毁
- ServletContextAttributeListener(Interface), 用来感知ServletContext对象属性的变化
- ServletRequestListener(Interface), 用来监听和感知ServletRequest对象的创建和销毁
- ServletRequestAttributeListener(Interface), 用来感知ServletRequest对象属性的变化
- HttpSessionListener(Interface), 用来监听HttpSession对象的创建和销毁
- HttpSessionAttributeListener(Interface), 用来监听HttpSession对象属性的变化
- HttpSessionBindingListener(Interface)(感知监听器), 将一个数据绑定到Session, 用来一对一的监听
- HttpSessionActivationListener(Interface), 用来监听Session绑定的对象钝化或者激活的时间
钝化: 把Session绑定的对象持久化到磁盘
激活: 重新读回来再放到Session空间
ServletContextListener监听器
- 作用: 监听ServletContext创建或销毁(当我们Web应用启动时, 就会创建ServletContext), 即生命周期监听. 应用场景: (1) 加载初始化的配置文件; (2) 任务调度(配合定时器Timer/TimerTask)
- 相关方法
void contextInitialized(ServletContextEvent sce) 创建ServletContext时触发
contextDestroyed(ServletContextEvent sce) 销毁ServletContext时触发
- 应用实例
- 新建java项目
- 导入Web框架
- 引入Servlet-pai.jar包
- 配置Tomcat
- 新建一个java类
- 实现监听器接口
- 业务处理
- 配置web.xml
- 运行结果
ServletContextAttributeListener监听器
- 作用: 监听ServletContext的属性变化
- 相关方法
void attributeAdded(ServletContextAttributeEvent event)添加属性时调用
void attributeReplaced(ServletContextAttributeEvent event)替换属性时调用
void attributeRemoved( ServletContextAttributeEvent event)移除属性时调用
- 应用实例
- 新建java类, 实现监听器接口
- 处理业务
创建并配置HiServlet, 书写业务逻辑中…
- 配置web.xml
- 运行结果
项目启动时, ServletContext会添加三个默认对象, 被ZzwServletContextAttributeListener 监听到
访问hiServlet
HttpSessionListener监听器
- 作用: 监听Session创建或销毁, 即生命周期监听(可用于监护用户上线, 离线)
- 相关方法
void sessionCreated(HttpSessionEvent se) 创建session时调用
sessionDestroyed(HttpSessionEvent se)销毁session时调用
- 应用实例
- 新建java类, 实现监听器接口
功能: 监听session的创建和销毁. 监听到有session创建时, 给该session的生命周期设置为30s
改进后(用于监护用户上线, 离线)
- 配置web.xml
- 运行结果
分析: 项目启动后, 会默认进入首页面, 这时会创建两个和系统相关的session, 30s过后, 这两个session被销毁, 被监听器监听到. 或者(如果不想看到它, 清一下控制台点击重新发布, 就没有了)
HttpSessionAttributeListener监听器
- 作用: 监听Session属性的变化
- 相关方法
void attributeAdded(ServletRequestAttributeEvent srae) 添加属性时调用
void attributeReplaced(ServletRequestAttributeEvent srae) 替换属性时调用
void attributeRemoved(ServletRequestAttributeEvent srae) 移除属性时调用
- 应用实例
- 创建并实现监听器
- 配置web.xml
- 配置Servlet
- 运行结果
ServletRequestListener监听器
- 作用: 监听Request创建或销毁, 即Request生命周期监听
- 相关方法
void requestInitialized(ServletRequestEvent sre) 创建request时触发
void requestDestroyed(ServletRequestEvent sre) 销毁request时触发
- 可以用来监控某个IP访问我们网站的频率, 记录日志, 访问资源的情况
- 实现监听器
- 配置web.xml
- 运行结果