今天学习了新的知识,也是java web里面的高级特性,监听器顾名思义就是监听某个对象的变化的,相当于现实世界中的侦探一样,时时刻刻监视着目标,一刻也不放松。这样就可以很形象的理解什么是监听器了,关于监听器的应用也是很复杂的,所以他的用途也是很广泛的,昨天学的过滤器有那么多用途,监听器也是如此。我觉得这两个就像是现实世界中的两个兄弟,如果两个兄弟一起工作,那将发挥更大的威力,暂时我还没有到达那个境界,没有资格谈论这两个一起用,只能单个的使用。下面总结下今天的知识点:
监听器的主要作用就是监听,当目标发生变化的时候就会触发一定的方法,这也就是所谓的事件触发机制。在这种机制中要有三个要素,也就是事件,事件源,处理事件的方法。这三要素之间是相互制约的。一旦事件处理方法被触发必定有事件发生,也就可以得到触发 的事件,通过事件也就可以得到事件源,也就谁触发了事件,这样据可以将这三个要素联系在一起了。一个事件源可以有多个触发事件,而一个触发事件的发生将有多个方法来调用,这也就是所谓的一对多关系,通过一对多关系我们很容易从多端得到一端,相反从一端无法得到多端,这个道理大家都是很清楚的,所以也就可以很好的理解事件处理方法可以得到事件对象,事件对象又可以得到事件源。那么如何使用监听器来进行监听呢?大概的编程过程有两个步骤:首先建一个类实现事件监听器接口,然后在web部署描述文件中进行注册。注册时使用<listener>的子元素就可以了<listener-class>,因为监听的对象很明确了,所以不用再编写映射了。实现事件监听接口,监听器接口有很多,包括域对象的创建和销毁监听接口,和域对象属性的变化监听接口。域对象创建和销毁接口有三个,包括:ServletRequestListener,ServletContextListener,HttpSessionListener:。域对象的属性变化监视器接口也有四个:ServletRequestAttributeListener,ServletContextAttributeListener,HttpSessionAttributeListener,HttpSessionBindingListener。这些接口中一般有两到三个方法需要实现,一般包括域对象创建时触发的方法,如requestInitialized,contextInitialized,sessionCreated,还有包括域对象销毁时触发的方法,包括: requestDestroyed,contextDestroyed, sessionDestroyed方法,还有就是关于域对象的属性发生变化时触发的事件,主要包括属性的增加,属性的修改和属性的删除三个方法,我们以application为例列举一下关于监视域对象属性的方法:
void attributeAdded(ServletRequestAttributeEvent srae),
void attributeRemoved(ServletRequestAttributeEvent srae),
void attributeReplaced(ServletRequestAttributeEvent srae)。三个方法分别对应application对象的属性的增加,删除和修改时所触发的方法。关于request和session对象的属性监视器的方法和这个大概一致,基本上可以类推,在此我就不在列举了,在以后的实际使用的过程中学会举一反三就可以了,没必要把所有的东西都要搞的很清楚,我们学习的时候是要掌握学习的技巧,学习的方法,以及自己独立处理问题的能力,不能总是依靠老师。我觉得只要在以后的开发中我会使用我没有学过但是是我仔细琢磨出来的,这样就达到学习的目的了。因为关于软件开发这个领域更新的速度太快,我们要学会学习新的事物。
下面谈论一下关于监听器的实际应用。这里在上课的时候老师讲的实例是统计现在有多少个用户在线,这里指明每一个用户对应一个session,有了这样的需求,我们其实就很有思路了。只要使用今天刚刚学习的监听器不就可以吗?session域对象在创建的时候和销毁的时候都会调用session监听器的相应方法,因此我们只要首先定义一个全局变量,然后在session创建的时候加一,在session销毁的时候就让这个变量减一就可以实现统计网站在线人数了。这个很简单,基本上不用怎么思考,一点难度也没有。下面的实例其实就是这个的一个升级,要统计现在网站上的在线IP的数量,这个稍微有点复杂了。我们首先这样考虑一个Ip 可以引发多个session,我们可以采用设置HashMap 变量onLineIPMap(不会有键重复) 来存储IP和session的数目,ip对应键,session 个数对应值,关键字的个数即为在线人数 。上线查看ip,如果onLineIPMap 中有,则加一;否则把ip 添加到onLineIPMap 并且记为1,我们可以使用ServletRequestListener监听器的这个方法来实现requestInitialized() 。还要考虑到一点就是必须是新创建的session 才有必要增加个数。 有人开始怀疑为什么不放在 HttpSessionListener.sessionCreated ?因为HttpSession 无法得到 ip ,而ServletRequest 可以得到ip,所以我们选用ServletRequest的监听器。下线查看ip,如果session 个数为1,则从onLineIPMap 删除该键;如果大于1 则session个数减一,这个就是使用HttpSessionListener.sessionDestroyed()这个方法来实现了。关于今天的实际应用收获还是挺大的。以后就会慢慢的接触项目了。
分享到:
相关推荐
Web监听器是Java Web应用程序中的一个重要组件,它们允许开发者在特定事件发生时执行代码,比如在Servlet上下文初始化或销毁时、用户会话创建或结束时等。在Java Web开发中,监听器通过实现特定接口并配置在`web.xml...
【标题】:“Web监听器”通常指的是在Web应用程序中用于监控特定事件或状态改变的组件。这类监听器能够帮助开发者捕获用户交互、系统事件或者应用程序内部的状态变化,从而实现相应的处理逻辑。例如,Servlet规范...
Java Web监听器Listener接口原理及用法实例 Java Web监听器Listener接口是一种特殊的Java接口,用于监听和响应Web应用程序中的事件。该接口定义在javax.servlet包中,提供了一种机制,使开发者能够监听和响应Web...
通过以上内容,我们可以了解到Web监听器在开发中的重要作用,从会话管理到系统监控,它们为开发者提供了一种灵活的机制来扩展和定制Web应用程序的行为。在实际工作中,结合源码学习和工具辅助,可以更好地掌握监听器...
1) 在web.xml中指定监听器类Listener 2) 监听器类Listener实现接口HttpSessionListener,需要重写两个方法 3) 从 HttpSessionEvent获取ServletConText,实现session创建统计在线人数增加 4) 从 HttpSessionEvent获取...
总之,这个"一个简单的监听器案例项目"为初学者提供了一个很好的起点,可以帮助他们掌握Java Web监听器的基本用法,并将其应用到自己的项目中。通过深入研究和实践,开发者能够提升对Web应用生命周期管理的理解,...
本篇文章将详细解析如何使用Java Web监听器来实现这一目标。 首先,我们需要了解两种主要的监听器类型:`HttpSessionListener` 和 `ServletRequestListener`。 1. **HttpSessionListener**: - 这个监听器用于...
在Web开发中,"Web Listener"是一个至关重要的...这些资源对于理解Web监听器的工作原理以及如何在实际项目中应用它们非常有帮助。通过深入学习和实践,开发者可以更好地控制Web应用的行为,提升系统的可维护性和性能。
Java Web 使用监听器实现定时周期性执行任务是一种常见的需求,特别是在服务器端需要定期进行某些维护操作,例如数据备份、清理过期数据或者发送通知。在这个"java web使用监听器实现定时周期性执行任务demo"中,...
在IT行业中,监听器(Listener)和过滤器(Filter)是两种非常重要的组件,它们在Web应用程序中扮演着不可或缺的角色。本文将详细讲解如何利用监听器进行访问计数以及通过过滤器来过滤非法字符,以确保系统的安全性...
Servlet监听器是Java Web开发中的一个重要概念,它允许开发者在特定的Servlet容器事件发生时执行相应的代码。在本文中,我们将深入探讨Servlet监听器的工作原理、配置和使用,结合具体的"web.xml"配置以及JSP页面的...
在本文中,我们将深入探讨Java EE(J2EE)中的Servlet监听器以及它们在Web应用程序中的作用,特别是在访问人数统计和引入MVC模式方面。首先,让我们了解什么是Servlet监听器。 Servlet监听器是Java Servlet规范的一...
在IT领域,监听器(Listener)是软件设计模式中的一种,广泛应用于事件驱动编程中,尤其是在Java和Web开发中。监听器允许程序订阅特定的事件,以便在这些事件发生时执行相应的操作。在这个名为"监听器源代码.zip"的...
在Java Web开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们主要用于增强应用程序的功能和管理应用程序的状态。本篇文章将详细解释这两种技术的使用、配置及其区别。 首先,我们来了解过滤...
在实际开发中,我们可以通过在`web.xml`部署描述符中配置监听器,或者在Java配置类中使用`@WebListener`注解来注册监听器。这种方式使得代码逻辑与Servlet容器更紧密地结合,增强了程序的可扩展性和维护性。 通过`...
2. **配置监听器**:然后,在web.xml配置文件中,你需要为监听器类添加相应的配置项,指定当特定事件发生时,应该调用哪个类的方法。 ```xml <web-app> ... <listener-class>com.example监听器类全名 ... </...
在Java Web开发中,监听器(Listener)是一个重要的组件,它们是Servlet API的一部分,用于监听特定事件并作出响应。在本示例中,“监听器实例jsp编写望大家喜欢”这个项目,显然涉及到如何在JSP(JavaServer Pages...
监听器在Java Web开发中扮演着非常重要的角色,主要用于监听特定容器事件的发生,比如服务器对象的创建与销毁等,并根据这些事件做出相应的处理。它的工作原理类似于事件驱动模型,其中事件由容器触发,监听器负责...
- **作用对象**:过滤器主要关注请求和响应的处理流程,而监听器则专注于Web应用的生命周期和用户会话事件。 - **处理时机**:过滤器在请求到达Servlet之前和离开Servlet之后进行操作,监听器则是在特定事件发生时...
在Java Web开发中,Servlet监听器(Servlet Listener)扮演着重要的角色,它是Servlet规范的一部分,允许开发者对Web应用程序中的特定事件进行监听和响应。在这个范例中,我们将深入探讨如何利用监听器来统计在线...