import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**监听器
*
* 作用:监听作用域对象request、session、application的创建、销毁和内容的改变
*
*使用步骤:
*创建一个普通的类实现相应的接口(ServletRequestListener,
*ServletRequestAttributeListener,HttpSessionListener,
*HttpSessionAttributeListener,ServletContextListener,
*ServletContextAttributeListener),重写里面的方法.
*
*具体如下:
*
*1.监听request
*
*
*(1)ServletRequestListener:监听request对象的创建与销毁
*方法:requestInitialized(ServletRequestEvent sre)//监听对象创建
*方法:requestDestroyed(ServletRequestEvent sre)//监听对象销毁
*注意:形参可以获取监听的request对象:sre.getServletRequest();
*
*
*(2)ServletRequestAttributeListener:监听request作用域中数据的变更
*方法:attributeAdded(ServletRequestAttributeEvent srae)//监听作用域中数据的增加
*方法:attributeRemoved(ServletRequestAttributeEvent srae)//监听数据的移除
*方法:attributeReplaced(ServletRequestAttributeEvent srae)//监听数据的改变
*注意:形参可以获取被监听的数据
*srae.getName():获取监听数据的键
*srae.getValue():获取监听数据的值
*
*
*(3)HttpSessionListener:监听session的创建和销毁
*方法:sessionCreated(HttpSessionEvent se)//监听session对象的创建
*方法:sessionDestroyed(HttpSessionEvent se)//监听session对象的销毁
*注意:形参可以获取被监听的session对象:se.getSession();
*
*
*(4)HttpSessionAttributeListener:监听session作用域中数据的变更
*方法:attributeAdded(HttpSessionBindingEvent event)//监听作用域中数据的增加
*方法:attributeRemoved(HttpSessionBindingEvent event)//监听数据的移除
*方法:attributeReplaced(HttpSessionBindingEvent event)//监听数据的改变
*注意:形参可以获取被监听的数据
*event.getName():获取数据的键名
*event.getValue():获取数据的值
*
*
*(5)ServletContextistener:监听application对象的初始化和销毁
*contextInitialized(ServletContextEvent sce):初始化,服务器启动
*contextDestroyed(ServletContextEvent sce):销毁 ,服务器关闭
*注意:形参可以获取当前application对象。sce.getServletContext();
*
*
*(6)ServletContextAttributeListener:监听监听application作用域的数据的变更
*attributeAdded(ServletContextAttributeEvent event)://监听作用域中数据的增加
*attributeRemoved(ServletContextAttributeEvent event)://监听数据的移除
*attributeReplaced(ServletContextAttributeEvent event://监听数据的改变
*注意:形参可以获取当前监听的数据
*event.getName() 获取数据的键名
*event.getValue() 获取数据的值
*
* 2.在web.xml中配置监听器类
* <listener>
* <listener-class>
* com.bjsxt.listener.MyListener
* </listener-class>
* </listener>
* @author zhou'en'xian
*
*/
public class MyListener implements ServletRequestListener,
ServletRequestAttributeListener,HttpSessionListener,
HttpSessionAttributeListener,ServletContextListener,
ServletContextAttributeListener{
/*@Override
public void requestInitialized(ServletRequestEvent sre) {
ServletRequestListener.super.requestInitialized(sre);
System.out.println("初始化》有用户访问!");
}
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("请求结束!已响应客户端!");
ServletRequestListener.super.requestDestroyed(sre);
}
*/
/*
@Override
public void attributeAdded(ServletRequestAttributeEvent srae) {
ServletRequestAttributeListener.super.attributeAdded(srae);
System.out.println("request中增加了属性"+srae.getName()+srae.getValue());
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent srae) {
ServletRequestAttributeListener.super.attributeReplaced(srae);
System.out.println("request中修改了属性"+srae.getName()+srae.getValue());
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent srae) {
ServletRequestAttributeListener.super.attributeRemoved(srae);
System.out.println("request域中删除了数据"+srae.getName()+srae.getValue());
}*/
/*
@Override
public void sessionCreated(HttpSessionEvent se) {
HttpSessionListener.super.sessionCreated(se);
System.out.println("会话建立!"+se.getSession().toString());
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
HttpSessionListener.super.sessionDestroyed(se);
System.out.println("会话结束!");
}
@Override
public void attributeAdded(HttpSessionBindingEvent se) {
HttpSessionAttributeListener.super.attributeAdded(se);
System.out.println("session域中添加了属性"+"\t"+se.getName()+se.getValue());
}
@Override
public void attributeReplaced(HttpSessionBindingEvent se) {
HttpSessionAttributeListener.super.attributeReplaced(se);
System.out.println("session域中修改了属性"+"\t"+se.getName()+se.getValue());
}
@Override
public void attributeRemoved(HttpSessionBindingEvent se) {
HttpSessionAttributeListener.super.attributeRemoved(se);
System.out.println("session域中删除属性"+"\t"+se.getName()+se.getValue());
}*/
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContextListener.super.contextInitialized(sce);
System.out.println("服务开启!");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
ServletContextListener.super.contextDestroyed(sce);
System.out.println("服务关闭!");
}
@Override
public void attributeAdded(ServletContextAttributeEvent scae) {
ServletContextAttributeListener.super.attributeAdded(scae);
System.out.println(scae.getName()+"context域中增加了属性"+scae.getValue());
}
@Override
public void attributeReplaced(ServletContextAttributeEvent scae) {
ServletContextAttributeListener.super.attributeReplaced(scae);
System.out.println(scae.getName()+"context域中修改了属性"+scae.getValue());
}
@Override
public void attributeRemoved(ServletContextAttributeEvent scae) {
ServletContextAttributeListener.super.attributeRemoved(scae);
System.out.println(scae.getName()+"context域中删除了属性"+scae.getValue());
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容