1  基本概念

监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。

JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext,HttpSession和ServletRequest等域对象的创建于销毁时间,以及监听这些域对象中的属性发生修改的事件。

2  Servlet监听器的分类

在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletletContext、HttpSession和ServletRequest这三个域对象。

Servlet规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型:

●  监听域对象自身的创建和销毁的事件监听器。

●  监听域对象中的属性的增加和删除的事件监听器。

●  监听绑定到HttpSession域中的某个对象的状态的事件监听器。

3  监听ServletContext域对象的创建和销毁

ServletContextListener接口用于监听ServletContext对象的创建和销毁事件。实现了ServletContextListener接口的类都可以对ServletContext对象的创建和销毁进行监听。

当ServletContext对象被创建时,激发contextInitialized(ServletContextEvent event)方法。

当ServletContext对象被销毁时,激发contextDestoryed(ServletContextEvent event)方法。

ServletContext域对象创建和销毁时机:

创建:服务器启动针对每一个Web应用创建ServletContext。

销毁:服务器关闭前先关闭代表每一个Web应用的ServletContext。

范例:编写一个MyServletContextListener类,实现ServletContextListener接口,监听ServletContext对象的创建和销毁。

●  编写监听器,代码如下:

package com.xdl.listener;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

/**

* MyServletContextListener类实现了ServletContextListener接口

* 因此可以对ServletContext对象的创建和销毁这两个动作进行监听

*/

public class MyServletContextListener implements ServletContextListener{

@Override

public void contextDestroyed(ServletContextEvent sce) {

System.out.println("ServletContext对象创建");

}

@Override

public void contextInitialized(ServletContextEvent sce) {

System.out.println("ServletContext对象销毁");

}

}

●  在web.xml文件中注册监听器

●  我们在上面中讲到,要想监听事件源,那么必须将监听器注册到事件源上才能够实现对事件源的行为动作进行监听,在JavaWeb中,监听的注册时在web.xml文件中进行配置的。详细配置如下:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1">

<listener>

<description>ServletContextListener监听器</description>

<listener-class>com.xdl.listener.MyServletContextListener</listener-class>

</listener>

</web-app>

经过这两个步骤,我们就完成了监听器的编写和注册,Web服务器在启动时,就会自动把在web.xml文件中配置的监听器注册到ServletContext对象上,这样开发好的MyServletContextListener监听器就可以对ServletContext对象进行监听了。

最新文章

  1. Oracle 11gR2 RAC修改监听默认端口
  2. 追MM的各种算法
  3. js MATH
  4. php加密解密0x数组
  5. c语言的一些库
  6. xcode6 AsynchronousTesting 异步任务测试
  7. C#如何关闭一个窗口的同时打开另一个窗口
  8. enum,struct,union类型使用和长度
  9. vs2010 dll生成,使用问题[good]
  10. css之自动换行-设计师零张
  11. IOS开发创建开发证书及发布App应用(三)——创建App ID
  12. jquery判空 string类型的日期比较大小
  13. 算法笔记 3.2 codeup1935 查找学生信息
  14. LeetCode--437--路径总和3
  15. Android 开发 技术大纲
  16. JAVA中数组Array与List互转
  17. SpringCloud之实现客户端的负载均衡Ribbon(二)
  18. Several ports (8005, 8080, 8009) required by Tomcat
  19. 弹指之间 -- Prerequisites
  20. 智能跳转---TC资源管理器

热门文章

  1. PAT 甲级 1041. Be Unique (20) 【STL】
  2. debian下编译openwrt固件
  3. JSON.stringify出现 &quot;Converting circular structure to JSON&quot;
  4. LightOJ 1132 Summing up Powers:矩阵快速幂 + 二项式定理
  5. 读取配置和动态配置(C方法)
  6. 设置document.domain实现js跨域注意点
  7. html5--2.5新的布局元素(4)-aside/nav
  8. kvm初体验之七:attach usb storage device to a VM
  9. 【Lintcode】017.Subsets
  10. HDU3974(dfs+线段树)