监听器主要针对三个对象
- ServletContext
- HttpSession
- ServletRequest
使用方式
- 创建
*Listener
接口的实现类 - 在
web.xml
中注册该类
在同时注册多个同接口的监听器时,执行顺序参照web.xml中的注册顺序
监听器监听类型
- 对象的创建和销毁
- 对象属性的添加、替换、移除
创建实现类
// 用于监听session创建和销毁的监听器
package listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
// 获取本次事件创建session的id
String sessionId = httpSessionEvent.getSession().getId();
System.out.println("create session that id = " + sessionId);
}
@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
// 删除session的id
String sessionId = httpSessionEvent.getSession().getId();
System.out.println("session has been destroy that id = " + sessionId);
}
}
在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"
id="WebApp_ID" version="3.1">
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<!-- 在listener包下的SessionListener类 -->
<listener-class>listener.SessionListener</listener-class>
</listener>
</web-app>