2019-05-21
Listener简介
Listener即监听器,用于监听web应用中某些对象的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等。
目前Servlet API一共包含八个Listener接口,可以将其分为三类:
-
与ServletContext有关的Listener接口
- ServletContextListener
- ServletContextAttributeListener
-
与HttpSession有关的Listener接口
-
HttpSessionListener
-
HttpSessionAttributeListener
-
HttpSessionBindingListener
-
HttpSessionActivationListener
-
-
与ServletRequest有关的Listener接口
- ServletRequestListener
- ServletRequestAttributeListener
使用Listener的步骤:
-
建立Listener实现类,实现Listener接口
-
在web.xml文件中配置Listerner
<listener>
<listener-class>过滤器类全路径名</listener-class>
</listener>
- 使用注解配置Listener
@WebListener
- 在服务器启动时自动实例化Listerner
HttpSession监听器
1.HttpSessionListener接口
实现session的初始化和销毁监听。接口包含两个方法:
sessionCreated()方法:监听session的创建。
sessionDestroyed()方法:监听session的销毁。
两个方法均包含类型为HttpSessionEvent的参数。通过其getSession()方法可以获得当前session对象。
package com.listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class MyListener implements HttpSessionListener{
//session创建时调用该方法
@Override
public void sessionCreated(HttpSessionEvent e) {
HttpSession session = e.getSession();
System.out.println("创建session,ID为" + session.getId());
}
//session销毁时调用该方法
@Override
public void sessionDestroyed(HttpSessionEvent e) {
HttpSession session = e.getSession();
System.out.println("销毁session,ID为" + session.getId());
}
}
2.HttpSessionAttributeListener接口
用来实现session属性变化的监听。接口包含3个方法:
attributeAdded ()方法:监听session属性的添加
attributeReplaced()方法:监听session属性的替换
attributeRemoved()方法:监听session属性的移除
三个方法均包含类型为HttpSessionBindingEvent的参数。通过其getName()方法可以获得属性名称;通过getValue()方法可以获得属性值。
网友评论