Servlet监听器技术

监听器的作用:

增加WEB的事件处理机制,更好的监视和控制web应用状态的变化

每当web应用中某些某些状态发生变化时,Servlet容器将产生相应的事件,此时我们实现的监听器会接收和处理这些事件.

Servlet2.4规范中定义了8个监听器接口和6个事件

监听器和监听事件的对应关系:

1.ServletContextListener   ---   ServletContextEvent//应用程序加载并初始化或应用程序卸载关闭

2.ServletContextAttributeListener  ---  ServletContextAttributeEvent //application应用范围内有对象add(加入)或 replace(取代) 或remove(移除)

3.HttpSessionListener || HttpSessionActivationListener   ---   HttpSessionEvent //Http会话的创建和销毁||会话的有效(active)和无效(passivate)状态

4.HttpsessionAttributeListener || HttpSessionBindingListener  ---  HttpSessionBindingEvent //会话属性的设置[session会话范围内有对象add(加入)或 replace(取代) 或remove(移除)]  ||  监听会话中对象的绑定信息,对象加入或移除(唯一无需在web.xml中设定listener)

5.ServletRequestListener  ---  ServletRequestEvent  //请求对象加载并初始化或销毁时

6.ServletRequestAttributeListener   ---  ServletRequestAttributeEvent  //request请求范围内有对象add(加入)或 replace(取代) 或remove(移除)(例如校内网,通过请求事件监听拒绝远程访问,通过从request中获取的ip地址判断是否准许访问)

 

按监听的事件可把监听器分为两种:

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

2)监听对象中属性(attribute)的增加和删除的事件监听器

 

简单介绍其中三个监听器接口()

一.ServletContextListener 监听应用程序环境对象

接口中有两个方法:

public void contextInitializes(ServletContextEvent  sce)//当应用程序部署时,web容器会创建一个ServletContextEvent事件对象,同时调用该方法,我们在实现类方法体中编写的事件处理代码即被执行.

public void contextDestroyed(ServletContextEvent sce)//在应用程序被卸载时会激发此方法

二.HttpSessionListener 监听用户会话对象(监听绑定到HttpSession域中的某个对象的状态)

接口中的两个方法接收一个HttpSessionEvent类型的事件对象参数

public void sessionCreated(HttpSessionEvent se)//在容器创建一个新的Session对象时激发

public void sessionDestroyed(HttpSessionEvent se)//在容器销毁一个Session对象时激发,可以通过参数获得当前被销毁的ServletRequest对象

三.ServletRequestListener 监听请求消息对象

其两个方法接收一个ServletRequestEvent类型事件对象参数

public void requestInitilized(ServletRequestEvent sre)//容器新建一个Request请求对象时激发

public void requestDestroyed(ServletRequestEvent sre)//可以通过参数获得当前被销毁的ServletRequest对象

编写特定功能的监听器只需要实现上述接口即可(可以实现其中之一,也可以全部实现,实现相应的方法完成你的目的;视开发实际情况而定)

例如:

 

package com.mycompany;

import javax.servlet.*;
import javax.servlet.http.*;

public class MyListener implements ServletContextListener,HttpSessionListener,ServletRequestListener{

 

......

 

} 

如web容器是tomcat可在web.xml中注册该监听器(可以注册一个或多个实现某一接口的事件监听器)

<listener>
    <listener-class>com.mycompany.MyListener</listener-class>
</listener>

 

posted @ 2018-10-20 16:55  code2038  阅读(258)  评论(0编辑  收藏  举报