java 1.7 事件监听_17.7Listener监听器
一、监听器介绍
1.1、监听器的概念
监听器
监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。监听器其 实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法 立即被执行。
二、JavaWeb中的监听器
2.1、基本概念
JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。
2.2、Servlet监听器的分类
在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象
Servlet规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型:
1、监听域对象自身的创建和销毁的事件监听器。
2、监听域对象中的属性的增加和删除的事件监听器。
3、监听绑定到HttpSession域中的某个对象的状态的事件监听器。
2.3、监听ServletContext域对象的创建和销毁
ServletContextListener接口用于监听ServletContext对象的创建和销毁事件。实现了ServletContextListener接口的类都可以对ServletContext对象的创建和销毁进行监听。
当ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法。
当ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。
ServletContext域对象创建和销毁时机:
1、创建:服务器启动针对每一个Web应用创建ServletContext
2、销毁:服务器关闭前先关闭代表每一个web应用的ServletContext
下面介绍一个监听用户在线的监听器
OnLineCountListener.java
public class OnLineCountListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer onLineCount = (Integer) context.getAttribute("onLineCount");
if (onLineCount == null) {
context.setAttribute("onLineCount", 1);
} else {
onLineCount++;
context.setAttribute("onLineCount", onLineCount);
}
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer onLineCount = (Integer) context.getAttribute("onLineCount");
if (onLineCount == null) {
context.setAttribute("onLineCount", 1);
} else {
onLineCount--;
context.setAttribute("onLineCount", onLineCount);
}
}
}
监听sessionCreated和sessionDestroyed两个事件。
配置web.xml
com.critc.listener.OnLineCountListener
加入监听器的配置
index.jsp
当前在线人数:
启动tomcat,通过session.getServletContext().getAttribute("onLineCount")可以获取在线人数。如下图所示,可以通过打开多个浏览器来模拟多个人。
在线人数
监听器用的非常非常多,还可以用于监听定时任务的执行、消息队列的处理等等。这里只是简单介绍一个例子
源码下载
java 1.7 事件监听_17.7Listener监听器相关推荐
- Java Swing 键盘事件监听
Java Swing 键盘事件监听 开发工具与关键技术:java. elipse2019.jdk1.8 作者:Amewin 撰写时间:2019年9月16日 键盘事件的事件源一般丐组件相关,当一个组件处 ...
- Zookeeper基于Java访问-节点事件监听
Watcher监听机制是Zookeeper中非常重要的特性,我们基于zookeeper上创建的节点,可以对这些节点绑定监听事件,比如可以监听节点数据变更.节点删除.子节点状态变更等事件,通过这个事件机 ...
- java swing鼠标事件监听_java swing鼠标监听问题
需要对一个JButton b添加一个监听事件达到创建一个自定义的Position(x,y)的对象: 监听类NewListen中需要用到鼠标在面板上点击取坐标值来完成创建一个Position(x,y)的 ...
- java actionlistener_java 鼠标事件监听ActionListener
当鼠标点击和放开时发生动作事件: 方法摘要: 列: public class shijian extends Frame { public static void main(String[] args ...
- Java中事件监听机制
Java中事件监听机制 一.事件监听机制的定义 要想了解Java中的事件监听机制,首先就要去了解一下在Java中事件是怎样去定义的呢!在使用Java编写好一个界面后,我们就会对界面进行一些操作,比如, ...
- Java按钮监听器ActionListener 事件监听教程.
按钮点击产生的效果通过事件监听来实现,下面介绍如何创建一个按钮的监听器, 一.创建监听器 1. 创建一个普通的Frame和然后添加一个按钮,参考教程 2.自制一个MyActionListener 的监 ...
- springboot 获取bean_SpringBoot高级(自动配置 事件监听 监控)
SpringBoot自动配置 condition-1 Condition是Spring4.0后引入的条件化配置接口,通过实现Condition接口可以完成有条件的加载相应的Bean @Conditio ...
- Spring容器的事件监听机制(简单明了的介绍)
文章目录 前言 事件 1. 定义事件 2. 定义监听器 3. 定义发布器 Spring容器的事件监听机制 1.事件的继承类图 监听器的继承类图 总结 前言 上一篇我们介绍了SpringFactorie ...
- Activiti工作流之事件监听详解-ActivitiEventListener
工作流程事件监听可用于任务提醒.超时提醒等的模块的设计.以下是相关事件的介绍 一.事件监听类型 ENGINE_CREATED 监听器监听的流程引擎已经创建完毕,并准备好接受API调用. ENGINE_ ...
最新文章
- 使用eclipse开发Java web应用
- Spring Session使用
- Wireshark图解教程(简介、抓包、过滤器)
- DDD领域模型自动生成?
- php socket 多次发送,php模拟socket 多次发送数据的实现方法
- ios下点击label包含的input checkbox或radio无效问题
- php postgresql mysql_PostgreSQL与MySQL比较(转)
- 专科计算机组成原理大一试题及答案,计算机组成原理专科试题答案.doc
- Confluence 6 修改日志文件的大小数量和级别
- Python之文章生成器(升级版,也就是更傻瓜式运行)
- ps里怎么给透明背景填充颜色
- 信用卡积分兑换里程全攻略
- Python基础---List(列表)
- 联通发布沃Phone,全球为之震动
- php k线15分钟 30分钟,成功率极高的“分时K线战法”:15分钟K线战法+30分钟K线战法...
- 用python写王字_看这里!Python之web之王!
- IMU输出的角度、角速度、加速度信息的坐标系
- 计算机图形学2d作业,计算机图形学作业
- 使用redis实现页面缓存
- CTR/推荐系统中多任务/多目标学习应用概述文章汇总
热门文章
- R语言使用upper.tri函数、lower.tri函数、diag函数改变matrix矩阵上三角形、下三角形、对角线的数值
- R语言ggplot2可视化改变线图(line plot)中线条的色彩实战
- R语言F分布函数F Distribution(df, pf, qf rf )实战
- python和R对dataframe的分组聚合操作:dplyr、groupby、agg、group_by、nunique、reset_index、rename、summarise、n_distinct
- python检查目录是否存在,如果不存在则创建
- ROC曲线与癌症分类
- ML基石_10_LogisticRegression
- 【转录组】如何进行序列比对?
- Linux系统介绍 文件夹和文件管理命令 10个(pwd ls cd mkdir touch mv rm cp tar ln)
- 图解SQL面试题:经典50题