以下监听可在WEB-INF/web.xml文件中配置
cn.java.listener.event.MyHttpSessionAttributeListener
监听器接口列表
// 事件监听器
// javax.servlet.ServletContextAttributeListener;
// javax.servlet.ServletRequestAttributeListener;
// javax.servlet.HttpSessionAttributeListener;
// javax.servlet.ServletRequestListener;
// javax.servlet.HttpSessionIdListener;
// 生命周期监听器
// javax.servlet.ServletContextListener;
// javax.servlet.http.HttpSessionListener;
事件监听器
Session属性修改,事件监听器
package cn.java.listener.event;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener {
/**
* 添加属性的时候触发
* 触发地点:request.getSession().setAttribute("key1","value1");
*/
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
// event.getSource() === event.getSession() == org.apache.catalina.session.StandardSessionFacade
// event.getName() == "key1"
// event.getValue() == "value1"
}
/**
* 删除属性的时候触发
* 触发地点:request.getSession().removeAttribute("key1")
*/
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
// event.getSource() === event.getSession() == org.apache.catalina.session.StandardSessionFacade
// event.getName() == "key1"
// event.getValue() == "旧值"
}
/**
* 替换、修改属性的时候触发
* 触发地点:request.getSession().setAttribute("key1","value1_new");
*/
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
// event.getSource() === event.getSession() == org.apache.catalina.session.StandardSessionFacade
// event.getName() == "key1"
// event.getValue() == "旧值"
}
}
SessionID修改时,事件监听器
package cn.java.listener.event;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionIdListener;
public class MyHttpSessionIdListener implements HttpSessionIdListener {
/**
* 修改sessionId的时候触发
* org.apache.catalina.session.StandardSession.tellChangedSessionId(....);
* 触发地点:request.changeSessionId();
*/
@Override
public void sessionIdChanged(HttpSessionEvent event, String oldSessionId) {
// event.getSession() === event.getSource() === org.apache.catalina.session.StandardSessionFacade
}
}
ServletContext上下文属性修改,事件监听器
package cn.java.listener.event;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
public class MyServletContextAttributeListener implements ServletContextAttributeListener {
/**
* 添加属性的时候触发
* 触发地点:request.getServletContext().setAttribute("key1","value1");
*/
@Override
public void attributeAdded(ServletContextAttributeEvent event) {
// event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade
// event.getName() == "key1"
// event.getValue() == "value1"
}
/**
* 删除属性的时候触发
* 触发地点:request.getServletContext().removeAttribute("key1")
*/
@Override
public void attributeRemoved(ServletContextAttributeEvent event) {
// event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade
// event.getName() == "key1"
// event.getValue() == "旧值"
}
/**
* 替换、修改属性的时候触发
* 触发地点:request.getServletContext().setAttribute("key1","value1_new");
*/
@Override
public void attributeReplaced(ServletContextAttributeEvent event) {
// event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade
// event.getName() == "key1"
// event.getValue() == "旧值"
}
}
request属性修改,事件监听器
package cn.java.listener.event;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
public class MyServletRequestAttributeListener implements ServletRequestAttributeListener {
/**
* 添加属性的时候触发
* 触发地点:request.setAttribute("key1","value1");
*/
@Override
public void attributeAdded(ServletRequestAttributeEvent event) {
// event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade
// event.getName() == "key1"
// event.getValue() == "value1"
// event.getServletRequest() == org.apache.catalina.connector.RequestFacade == request
}
/**
* 删除属性的时候触发
* 触发地点:request.removeAttribute("key1")
*/
@Override
public void attributeRemoved(ServletRequestAttributeEvent event) {
// event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade
// event.getName() == "key1"
// event.getValue() == "旧值"
// event.getServletRequest() == org.apache.catalina.connector.RequestFacade == request
}
/**
* 替换、修改属性的时候触发
* 触发地点:request.setAttribute("key1","value1_new");
*/
@Override
public void attributeReplaced(ServletRequestAttributeEvent event) {
// event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade
// event.getName() == "key1"
// event.getValue() == "旧值"
// event.getServletRequest() == org.apache.catalina.connector.RequestFacade == request
}
}
request创建、销毁,事件监听器
package cn.java.listener.event;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class MyServletRequestListener implements ServletRequestListener {
/**
* 请求销毁
* 触发地点:org.apache.catalina.core.StandardHostValve.invoke(Request request, Response response)
*/
@Override
public void requestDestroyed(ServletRequestEvent event) {
// event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade
// event.getServletRequest() == org.apache.catalina.connector.Request
}
/**
* 请求初始化
* 触发地点:org.apache.catalina.core.StandardHostValve.invoke(Request request, Response response)
*/
@Override
public void requestInitialized(ServletRequestEvent event) {
// event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade
// event.getServletRequest() == org.apache.catalina.connector.Request
}
}
生命周期监听器
session创建、销毁,生命周期监听器
package cn.java.listener.lifecycle;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* Session的生命周期
* @author Administrator
*
*/
public class MyHttpSessionListener implements HttpSessionListener {
/**
* 触发地点1:
* request.changeSessionId();
* org.apache.catalina.session.StandardSession.setId(String id)
* org.apache.catalina.session.StandardSession.tellNew()
*/
@Override
public void sessionCreated(HttpSessionEvent event) {
// event.getSource() == event.getSource() == org.apache.catalina.session.StandardSessionFacade
}
/**
* 触发地点:org.apache.catalina.session.StandardSession.expire(boolean notify)
*/
@Override
public void sessionDestroyed(HttpSessionEvent event) {
// event.getSource() == event.getSource() == org.apache.catalina.session.StandardSessionFacade
}
}
ServletContext上下文创建、销毁,声明周期监听器
package cn.java.listener.lifecycle;
import javax.servlet.ServletContextEvent;
/**
* 服务器启动、关闭
*
* 启动上下文、或者销毁上下文的时候触发
* @author Administrator
*
*/
public class MyServletContextListener implements javax.servlet.ServletContextListener {
/**
* 触发地点:org.apache.catalina.core.StandardContext.startInternal()
*/
@Override
public void contextInitialized(ServletContextEvent event) {
// event.getSource() == event.getServletContext() == org.apache.catalina.core.ApplicationContextFacade
}
/**
* 触发地点:org.apache.catalina.core.StandardContext.stopInternal()
*/
@Override
public void contextDestroyed(ServletContextEvent event) {
// event.getSource() == event.getServletContext() == org.apache.catalina.core.ApplicationContextFacade
}
}