Tomcat 8.x 《应用》,监听器(生命周期监听器、事件监听器)

来源:互联网 发布:北京中搜网络是真是假 编辑:程序博客网 时间:2024/05/16 10:35


以下监听可在WEB-INF/web.xml文件中配置

<listener>    <listener-class>cn.java.listener.event.MyHttpSessionAttributeListener</listener-class></listener>


监听器接口列表

// 事件监听器//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"); */@Overridepublic void attributeAdded(HttpSessionBindingEvent event) {//event.getSource() === event.getSession() == org.apache.catalina.session.StandardSessionFacade//event.getName() == "key1"//event.getValue() == "value1"}/** * 删除属性的时候触发 * 触发地点:request.getSession().removeAttribute("key1") */@Overridepublic void attributeRemoved(HttpSessionBindingEvent event) {//event.getSource() === event.getSession() == org.apache.catalina.session.StandardSessionFacade//event.getName() == "key1"//event.getValue() == "旧值"}/** * 替换、修改属性的时候触发 * 触发地点:request.getSession().setAttribute("key1","value1_new"); */@Overridepublic 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(); */@Overridepublic 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"); */@Overridepublic void attributeAdded(ServletContextAttributeEvent event) {//event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade  //event.getName() == "key1"//event.getValue() == "value1"}/** * 删除属性的时候触发 * 触发地点:request.getServletContext().removeAttribute("key1") */@Overridepublic void attributeRemoved(ServletContextAttributeEvent event) {//event.getServletContext() == event.getSource() == org.apache.catalina.core.ApplicationContextFacade  //event.getName() == "key1"//event.getValue() == "旧值"}/** * 替换、修改属性的时候触发 * 触发地点:request.getServletContext().setAttribute("key1","value1_new"); */@Overridepublic 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"); */@Overridepublic 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") */@Overridepublic 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"); */@Overridepublic 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) */@Overridepublic 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) */@Overridepublic 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() */@Overridepublic void sessionCreated(HttpSessionEvent event) {//event.getSource() == event.getSource() ==  org.apache.catalina.session.StandardSessionFacade}/** * 触发地点:org.apache.catalina.session.StandardSession.expire(boolean notify) */@Overridepublic 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() */@Overridepublic void contextInitialized(ServletContextEvent event) {//event.getSource() == event.getServletContext() == org.apache.catalina.core.ApplicationContextFacade  }/** * 触发地点:org.apache.catalina.core.StandardContext.stopInternal() */@Overridepublic void contextDestroyed(ServletContextEvent event) {//event.getSource() == event.getServletContext() == org.apache.catalina.core.ApplicationContextFacade  }}







0 0
原创粉丝点击