监听器主要用来监听ServletContext,HttpSession以及ServletRequest对象的创建与销毁,他们属性的添加、修改与删除。也就是说当这三个类的对象被创建与被销毁,属性发生变化时都会出发监听器中对应的方法进行执行。
监听器类的创建很简单,创建一个普通的java类并根据需要实现不同的接口即可
要完成不同的监听功能,需要创建的监听器类也不相同,也就是实现的接接口不同,主要以下六种
ServletontextListener 监听ServletContext对象的创建与销毁时需要实现的接口
需要实现的方法有两个
public void contextDestroyed(ServletContextEvent event) {
System.out.println("servletcontext对象被销毁!");
}
@Override
public void contextInitialized(ServletContextEvent event) {
System.out.println("servletcontext对象被创建!");
//通过ServletContextEvent对象可以获得ServletContext对象,从而读取web级配置的参数
ServletContext context = event.getServletContext();
Enumeration<String> ee = context.getInitParameterNames();
while(ee.hasMoreElements()){
String name = ee.nextElement();
System.out.println(name +" : "+context.getInitParameter(name));
}
}
ServletontextAttributeListener 监听Servletontext对象的属性的添加、修改、删除需要实现的接口,需要实现的方法有三个
public void attributeAdded(ServletContextAttributeEvent event) {
System.out.println("add");
//这个方法传递的参数也可以获取ServletContext对象,同时可以直接通过他的getName()与getValue()方法获得属性的名称与值
ServletContext context = event.getServletContext();
String name = event.getName();
Object value = event.getValue().toString();
System.out.println(name + " " + value);
}
@Override
public void attributeRemoved(ServletContextAttributeEvent event) {
System.out.println("remove");
}
@Override
public void attributeReplaced(ServletContextAttributeEvent event) {
System.out.println("modify");
}
另外四个接口分别是HttpSessionListener HttpSessionAttributeListener ServletRequestListener ServletRequestAttributeListener从接口名称我们就可以看出来,他们与ServletContetListener ServletContetAttributeListener 是类似的,不再赘述
监听类创建好之后还需要在web.xml中进行注册,只有这样web容器才能使用监听器,注册的方法如下
<listener>
<listener-class>com.imooc.listener.HttpSessionAttributeListenerTest</listener-class>
</listener>
---文章为原创,如有错误与不足之处,还望斧正,小生在此谢过啦---