`

监听器

阅读更多

监听器概述

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()

 

配置事件监听类的步骤:

<!--[if !supportLists]-->1.     <!--[endif]-->打开Web应用的部署描述文件web.xml

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

    <listener>

       <listener-class>

com.puckasoft.video.servlet.TestSessionListener

</listener-class>

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

编写事件监听类

编写事件监听类的步骤:

<!--[if !supportLists]-->1.     <!--[endif]-->创建新的类并实现事件对应的接口

<!--[if !supportLists]-->2.     <!--[endif]-->定义不接受参数、访问属性为public的构造函数

<!--[if !supportLists]-->3.     <!--[endif]-->实现接口的方法

<!--[if !supportLists]-->4.     <!--[endif]-->编译并拷贝到对应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 <!--[if !supportAnnotations]-->[p2]<!--[endif]--> {

      public void sessionCreated(HttpSessionEvent arg0<!--[if !supportAnnotations]-->[p3]<!--[endif]--> ) {

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

           InfoWebService.addSessionNum();

      }

 

      public void sessionDestroyed<!--[if !supportAnnotations]-->[p4]<!--[endif]--> (HttpSessionEvent arg0) {

           // TODO Auto-generated method stub

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

           InfoWebService.decreaseSessionNum();

      }

 

}

 

其他知识点:

<!--[if !supportLists]-->1.    <!--[endif]-->属性监听器中可以通过event.getName(),得到所创建属性的名称,event.getValue()属性得到所创建属性的值。

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

 

<!--[if !supportAnnotations]-->
<!--[endif]-->
<!--[if !supportAnnotations]-->
<!--[endif]--><!--[if !supportAnnotations]--><!--[endif]-->

 <!--[if !supportAnnotations]-->[番茄花园1]<!--[endif]-->注意<listener>的位置!!!

<!--[if !supportAnnotations]-->
<!--[endif]-->
<!--[if !supportAnnotations]-->
<!--[endif]--><!--[if !supportAnnotations]--><!--[endif]-->

 <!--[if !supportAnnotations]-->[p2]<!--[endif]-->监听器也是实现的接口

<!--[if !supportAnnotations]-->
<!--[endif]-->
<!--[if !supportAnnotations]-->
<!--[endif]--><!--[if !supportAnnotations]--><!--[endif]-->

 <!--[if !supportAnnotations]-->[p3]<!--[endif]-->一般把这个变量改为event

<!--[if !supportAnnotations]-->
<!--[endif]-->
<!--[if !supportAnnotations]-->
<!--[endif]--><!--[if !supportAnnotations]--><!--[endif]-->

 <!--[if !supportAnnotations]-->[p4]<!--[endif]-->Session失效时,调用;attributeRemoved是在session失效和属性被remove

<!--[if !supportAnnotations]-->
<!--[endif]-->
分享到:
评论

相关推荐

    自己编写一个Java监听器

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

    配置Oracle监听器

    配置Oracle监听器 配置Oracle监听器

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

    主要介绍了Java设计模式之监听器模式,结合实例形式较为详细的分析了java设计模式中监听器模式的概念、原理及相关实现与使用技巧,需要的朋友可以参考下

    java事件监听器

    当你将一个类用作事件监听器时,你已经设置好一个特定的事件类型,它会用该类进行监听。接下来的操作是:一个匹配的监听器必须被加入到该组件中 组件被创建之后,可以在组件上调用如下方法来将监听器与它联系起来 ...

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

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

    java一个监听器的例子

    java一个监听器的例子

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

    主要给大家介绍了关于java监听器实现和原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    自定义事件的监听器

    2. 对某个源注册一个监听器,此源便成为一个事件源,当事件源上发生某一个动作时,监听器的某个方法将会被调用执行,在执行事件监听器的这个方法时,同时会把事件监听对象传递给此方法,开发人员在监听器中可以拿到...

    android 外部类作为事件监听器类

    android 外部类作为事件监听器类 ,外部类形式的事件监听器不能自由访问创建GUI界面

    三种简单的监听器电路图分享

    下图所示的驻波比监听器电路是专门为盲人业余无线电爱好者设计的,其目的是让盲人能够根据声音来检查传输线的驻波比,并尽可能把源阻抗与负载阻抗调整到完全匹配。图中的黑粗线是两条6*70mm的薄金属条彼此相距1.5mm...

    【动力节点】Javaweb开发视频教程之监听器

    教程名称: 【动力节点】Javaweb开发视频教程之监听器 动力节点推出的Java视频教程包含两大部分内容:第一部分为监听器相关设计模式的详解。其中包括观察者设计模式、监听器设计模式。第二部分为监听器用法。详细...

    java字符编码监听器

    java字符编码监听器

    JavaWeb13-过滤器与监听器.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar

    Java监听器添加 四种监听器 内部 外部 内部匿名 自身

    Java监听器添加 四种监听器 内部 外部 内部匿名 自身

    过滤器与监听器

    Web页面的过滤与监听 了解Filter基本概念和适用场合 掌握使用Filter的基本步骤 会定义和使用Filter 掌握全局对象监听器的使用和应用 掌握会话对象监听器的使用和应用

    web监听器代码--监听servlet

    web监听器代码web监听器代码web监听器代码web监听器代码web监听器代码web监听器代码

    监听器访问计数过滤非法字符

    用监听器实现在线人数统计,过滤器实现页面自动编码 非法字符过滤

    过滤器和监听器.

    过滤器和监听器

    网络数据监听器 网络数据监听器

    网络数据抓包器,汉化版。简单实用,功能强大!网络数据监听器

    java servlet 监听器

    servelt 监听器 class MyRequest extends HttpServletRequestWrapper { public MyRequest(HttpServletRequest request) { super(request); } public String MyEncoding(String value) { String value...

Global site tag (gtag.js) - Google Analytics