热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

以下监听可在WEB-INFweb.xml文件中配置<listener><listener-class>cn.java.listener.event.


以下监听可在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

}

}








推荐阅读
author-avatar
mrkly_825
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有