`
java风
  • 浏览: 57573 次
  • 来自: 北京
社区版块
存档分类
最新评论
  • 泛泛evil: 总结的很好,谢谢分享
    JavaScript
  • wanxkl: 哇!总结的太好了。。凤哥哥,你好强大啊。。请问您跟凤姐什么关系 ...
    css应用

监听器

    博客分类:
  • java
阅读更多

监听器概述

1.ListenerServlet的监听器

2.可以监听客户端的请求、服务端的操作等。

3.通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession时,给在线人数加1

4.编写监听器需要实现相应的接口

5.编写完成后在web.xml文件中配置一下,就可以起作用了

常用的监听接口 

应用事件模型提供了当ServletContextHttpSessionServletRequest状态改变时的通知功能。可以编写事件监听类来响应这些状态的改变,并且可以配置和部署应用事件和监听类到Web应用。

对于ServletContext事件,当Web应用部署、卸载和对context增加属性时,事件监听类可以得到通知。下表列出了ServletContext的事件类型,对应特定事件的监听类必须实现的接口和当事件发生时调用的方法。

事件类型

接口

方法

Servlet context被创建

javax.servlet.ServletContextListener

contextInitialized()

Servlet context被注销

javax.servlet.ServletContextListener

contextDestroyed()

增加属性

javax.servlet. ServletContextAttributeListener

attributeAdded()

删除属性

javax.servlet. ServletContextAttributeListener

attributeRemoved()

属性被替换

javax.servlet. ServletContextAttributeListener

attributeReplaced()

对于HttpSession事件,当session激活、删除或者session属性的增加、删除和替换时,事件监听类得到通知。下表列出了HttpSession的事件类型,对应特定事件的监听类必须实现的接口和当事件发生时调用的方法。

事件类型

接口

方法

session激活

javax.servlet.http. HttpSessionListener

sessionCreated()

session删除

javax.servlet.http. HttpSessionListener

sessionDestroyed()

增加属性

javax.servlet.http. HttpSessionAttributeListener

attributeAdded()

删除属性

javax.servlet.http. HttpSessionAttributeListener

attributeRemoved()

属性被替换

javax.servlet.http. HttpSessionAttributeListener

attributeReplaced()

对于ServletRequest事件,当request初始化、销毁或者request属性的增加、删除和替换时,事件监听类得到通知。下表列出了ServletRequest的事件类型,对应特定事件的监听类必须实现的接口和当事件发生时调用的方法。

事件类型

接口

方法

Request初始化

javax.servlet.ServletRequestListener

requestInitialized()

request销毁

javax.servlet.ServletRequestListener

requestDestroyed()

增加属性

javax.servlet.ServletRequestAttributeListener

attributeAdded()

删除属性

javax.servlet.ServletRequestAttributeListener

attributeRemoved()

属性被替换

javax.servlet.ServletRequestAttributeListener

attributeReplaced()

配置事件监听类的步骤:

1. 打开Web应用的部署描述文件web.xml

2. 增加事件声明标记<listener>事件声明定义的事件监听类在事件发生时被调用。<listener>标记必须在<filter>标记和<servlet>标记之可以为每种事件定义多个事件监听类,Apusic应用服务器按照它们在部署描述文件声明的顺序调用。例如:

<listener>

<listener-class>

com.puckasoft.video.servlet.TestSessionListener

</listener-class>

</listener>编写和部署监听类。

编写事件监听类

编写事件监听类的步骤:

1. 创建新的类并实现事件对应的接口

2. 定义不接受参数、访问属性为public的构造函数

3. 实现接口的方法

4. 编译并拷贝到对应Web应用的WEB-INF/classes目录下,或者打包成jar文件拷贝到WEB-INF/lib目录下

监控session创建和销毁的例子:

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

import com.puckasoft.video.util.InfoWebService;

public class TestSessionListener implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent arg0) {

System.out.println("系统创建了一个HttpSession对象");

InfoWebService.addSessionNum();

}

public void sessionDestroyed(HttpSessionEvent arg0) {

// TODO Auto-generated method stub

System.out.println("系统销毁了一个HttpSession对象");

InfoWebService.decreaseSessionNum();

}

}

其他知识点:

1. 属性监听器中可以通过event.getName(),得到所创建属性的名称,event.getValue()属性得到所创建属性的值。

2. 使用某个监听器时,除了要在web.xml里配置,还要在使用监听器的页面里<%@ page language="java" import="java.util.*,com.suppervideo.listener.UserAttrListener,com.suppervideo.listener.UserListener" pageEncoding="gbk"%>引入

3. 服务器决定与某个客户端开启一个会话 创建一个Session对象 只要开启一个 浏览器就会创建一个 session对象 

4. 当 session被 remove 或是 session.invalidate()失效那么一个session被清除

<!--EndFragment-->
分享到:
评论

相关推荐

    android监听器实例代码

    Android 监听器实例代码详解 Android 监听器是 Android 应用开发中的一种常用机制,用于检测用户交互或系统事件,通过监听器可以实现各种交互效果,例如按钮点击、列表项选中、编辑框输入等。下面将详细介绍 ...

    监听器.zip

    在Java GUI编程中,AWT和Swing提供了多种类型的监听器,如动作监听器(ActionListener)、鼠标监听器(MouseListener)、键盘监听器(KeyListener)以及组件监听器(ComponentListener)等。这些监听器允许我们对...

    Java设计模式之监听器模式实例详解

    监听器模式是Java设计模式中的一种行为型模式,主要用于监听某些事件的发生,并在事件发生时自动执行预定义的操作。在实际开发中,监听器模式可以用于多种场景,如UI事件处理、事件广播、异步通知等。 在监听器模式...

    Springboot项目监听器失效问题解决

    主要介绍了Springboot项目监听器失效问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Spring监听器及定时任务实现方法详解

    Spring监听器及定时任务实现方法详解 在本文中,我们将详细介绍Spring监听器及定时任务实现方法的详解。通过示例代码,我们将展示如何使用Spring监听器和定时任务来实现批处理任务的执行。 Spring监听器 在Spring...

    自己编写一个Java监听器

     当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。  例如:创建一个“人”类Class Person  人拥有吃的方法public void eat(){},我们的目的是,在这个人吃之前要提醒他洗手,所以我们要...

    JSP监听器用法分析

    本文实例讲述了JSP监听器用法。分享给大家供大家参考,具体如下: 监听器也叫Listener,是servlet服务的监听器。它可以监听客户端的请求,服务端的操作等。比如统计在线用户数量。每当增加一个HttpSession时,就会...

    java监听器的实现和原理详解

    Java监听器的实现和原理详解 Java监听器是一种非常重要的设计模式,在Java中广泛应用于事件驱动编程。监听器模式的主要思想是将事件源和事件处理器分离,使得事件源可以独立于事件处理器,提高了系统的灵活性和可...

    Android编程之监听器的实现方法

    在Android编程中,监听器(Listener)是一种关键的机制,用于捕捉用户交互或者其他系统事件,并进行相应的处理。本文将详细讲解如何在Android中实现监听器,主要包括三种方式:通过内部类实现、使用匿名内部类以及让...

    Spring Boot的listener(监听器)简单使用实例详解

    "Spring Boot的listener(监听器)简单使用实例详解" 在Spring Boot中,listener(监听器)是一种非常重要的组件,它可以帮助我们在应用程序启动和停止时执行一些特定的任务。今天,我们将详细介绍Spring Boot的...

    SQL Server Alwayson添加监听器失败的解决方法

    在Alwayson环境中,监听器扮演着至关重要的角色,因为它允许客户端通过单一的虚拟IP地址和端口连接到可用性组,而无需关心实际的数据驻留在哪个副本上。 然而,有时在尝试添加Alwayson监听器时可能会遇到失败的情况...

    事件监听器-EditText的事件监听

    事件监听器是Android开发中的重要概念,用于捕捉和响应用户在界面上的各种交互操作。在Android中,事件监听器主要用于处理UI控件的点击、触摸、键盘输入等事件。本篇将详细介绍EditText的事件监听。 首先,我们来看...

    监听器获取Spring配置文件的方法

    监听器在此场景中扮演着重要角色,它们会在Web应用程序启动时自动执行。本文将详细介绍如何通过监听器获取Spring配置文件中的bean,以及几种实现方式的优劣分析。 首先,我们需要创建一个监听器来执行这些初始化...

    Jmeter常用监听器插件.zip

    jmeter安装后,需安装old style插件引入监听器jar包。提供常用插件包,以更新到lib和lib/ext目录,以防忘记。顺便放了个数据库测试插件mysql-connector-java-xxx.jar文件,是放到lib目录,其他更新到ext目录。

    基于 RBAC与监听器机制设计作业管理软件

    ### 基于RBAC与监听器机制设计作业管理软件 #### 一、项目背景与目标 本项目旨在设计一款适用于教育场景中的作业管理系统,利用角色基础的访问控制(Role-Based Access Control,简称RBAC)及监听器机制来实现安全...

    Java监听器三种实现方法代码解析

    Java监听器是Java GUI编程中的一个重要概念,它主要用于处理组件事件。在Java AWT和Swing库中,事件处理机制是基于监听器模式的。监听器允许程序注册为特定事件的接收者,当这些事件发生时,监听器会接收到通知并...

    如何配置Oracle监听器

    ### 如何配置Oracle监听器 在Oracle数据库管理与维护中,正确配置监听器是确保数据库服务正常运行的关键步骤之一。监听器的主要职责是接收客户端连接请求,并将其分发到相应的数据库实例。如果监听器配置不当,则会...

    Android在自定义类中实现自定义监听器方式

    在Android开发中,自定义监听器是一种常见的实现用户交互或监控对象状态变化的方式。监听器模式允许一个对象在其内部状态发生变化时通知其他对象。在自定义类中实现自定义监听器,可以有效地让外部监听到自定义类...

    快速学习JavaWeb中监听器(Listener)的使用方法

    【JavaWeb监听器(Listener)详解】 在JavaWeb开发中,监听器(Listener)是一种重要的组件,主要用于监听和响应Web应用程序中的特定事件。通过监听器,开发者可以实现在特定事件触发时执行相应的处理逻辑,例如用户...

Global site tag (gtag.js) - Google Analytics