ITPub博客

首页 > 应用开发 > Java > 监听器

监听器

原创 Java 作者:KFCLYY 时间:2020-01-10 17:44:54 0 删除 编辑

一、什么是监听器

监听器的作用是对Web应用对象的行为进行监控,可以自动出发指定的功能代码。监听器可以监听的对象包括:

ServletContext,全局ServletContext及其属性

HttpSession,用户会话及其属性

ServletRequest,请求及其属性



二、监听器的实现

1.实现XxxListener接口,不同接口对应不同监听对象

2.实现每个接口中独有的方法

3.配置web.xml文件



三、常用接口

  1. ServletContextListener,监控ServletContext对象创建、销毁等操作

  2. HttpSessionListener,监听 HttpSession 对象创建、销毁等操作

  3. ServletRequest Listener,监听 Http Request 对象创建、销毁等操作

  4. ServletContextAttributeListener,监听全局属性操作

  5. HttpSession AttributeListener,监听用户会话属性操作

  6. ServletRequest Attribute Listener,监听请求属性操作


四、示例

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class WebListener implements ServletContextListener,HttpSessionListener,ServletRequestListener{
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		System.out.println("ServletContext已初始化");
	}
	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		System.out.println("ServletContext已被销毁");
	}
	@Override
	public void sessionCreated(HttpSessionEvent se) {
		HttpSession session = se.getSession();
		// TODO Auto-generated method stub
		System.out.println("Session已被创建,SessionId:" + session.getId());
	}
	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		System.out.println("Session已被销毁");
	}
	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
		// TODO Auto-generated method stub
		System.out.println("HttpServletRequest已被销毁");
	}
	@Override
	public void requestInitialized(ServletRequestEvent sre) {
		HttpServletRequest request = (HttpServletRequest)sre.getServletRequest();
		// TODO Auto-generated method stub
		System.out.println("HttpServletRequest已被创建,URI:" + request.getRequestURI());
	}
}
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class WebAttributeListener implements ServletContextAttributeListener,HttpSessionAttributeListener ,ServletRequestAttributeListener{
	@Override
	public void attributeAdded(ServletContextAttributeEvent event) {
		// TODO Auto-generated method stub
		System.out.println("ServletContext新增属性:" + event.getName() + "->" + event.getValue());
	}
	@Override
	public void attributeRemoved(ServletContextAttributeEvent event) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void attributeReplaced(ServletContextAttributeEvent event) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void attributeAdded(HttpSessionBindingEvent event) {
		// TODO Auto-generated method stub
		System.out.println("HttpSession新增属性:" + event.getName() + "->" + event.getValue());
	}
	@Override
	public void attributeRemoved(HttpSessionBindingEvent event) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void attributeReplaced(HttpSessionBindingEvent event) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void attributeAdded(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		System.out.println("Request新增属性:" + srae.getName() + "->" + srae.getValue());
		
	}
	@Override
	public void attributeRemoved(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void attributeReplaced(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		
	}
}


五、应用场景

  1. 请求流量分析


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69917450/viewspace-2672901/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 过滤器
请登录后发表评论 登录
全部评论
不积跬步,无以至千里

注册时间:2019-04-24

  • 博文量
    23
  • 访问量
    11866