JAVA监听器Listener

本文介绍了JAVA中的监听器Listener,包括ServletContext、HttpSession和ServletRequest三种类型的监听器。详细讲解了如何配置监听器,并提供了具体实现的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA监听器Listener
一、 简介
监听器用于对web中内置对象的状态或者属性变化进行监听并做出相应响应的一种Servlet;在内置对象的生命周期中,产生、销毁等状态发生变化时,监听器就会进行监听并做出响应,当内置对象的属性发生增加,删除,修改等变化时,监听器也会做出相应响应。
二、 分类
ServletContext对象监听器
HttpSession对象监听器
ServletRequest对象监听器
三、 如何配置监听器
在web.xml中添加:


<listener>
		<listener-class>com.zsl33.mvc.listener.RequestListener</listener-class>
		<listener-class>com.zsl33.mvc.listener.SessionListener</listener-class>
		<listener-class>com.zsl33.mvc.listener.ApplicationListener</listener-class>
	</listener>

使用注解进行配置:
在监听器类上加上
@WebListener

四、 接口
Session监听器类对Session状态进行监听需要实现javax.servlet.http.HttpSessionListener 接口,对Session属性进行监听则需要实现 javax.servlet.http.HttpSessionAttributeListener``` 接口
实例:

@WebListener
public class SessionListener implements HttpSessionListener,HttpSessionAttributeListener{

	@Override
	public void attributeAdded(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("session增加:"+arg0.getSession().getId());
	}

	@Override
	public void attributeRemoved(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("session删除:"+arg0.getSession().getId());
	}

	@Override
	public void attributeReplaced(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("session替换:"+arg0.getSession().getId());
	}

	@Override
	public void sessionCreated(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("session创建:"+arg0.getSession().getId());
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("session销毁:"+arg0.getSession().getId());
	}

}

Request监听器类对Request状态进行监听需要实现javax.servlet.ServletRequestListener 接口,对Request属性进行监听需要实现
javax.servlet.ServletRequestAttributeListener 接口
实例:

@WebListener
public class RequestListener implements ServletRequestListener,ServletRequestAttributeListener{

	@Override
	public void requestDestroyed(ServletRequestEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("监听:Request内置对象销毁");
	}

	@Override
	public void requestInitialized(ServletRequestEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("监听:Request内置对象初始化");
	}

	@Override
	public void attributeAdded(ServletRequestAttributeEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("监听:新增:"+arg0.getName()+":"+arg0.getValue());
	}

	@Override
	public void attributeRemoved(ServletRequestAttributeEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("监听:删除:"+arg0.getName()+":"+arg0.getValue());
	}

	@Override
	public void attributeReplaced(ServletRequestAttributeEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("监听:替换:"+arg0.getName()+":"+arg0.getValue());
	}

}

Application监听器类对Application对象状态进行监听,需要实现javax.servlet.ServletContextListener 接口,对Application对象属性进行监听需要实现
javax.servlet.ServletContextAttributeListener 接口;
实例:

@WebListener
public class ApplicationListener implements ServletContextListener,ServletContextAttributeListener{

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("监听:Application内置对象销毁");
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("监听:Application内置对象初始化");
		
	}

	@Override
	public void attributeAdded(ServletContextAttributeEvent arg0) {
		System.out.println("监听:新增:"+arg0.getName()+":"+arg0.getValue());
		
	}

	@Override
	public void attributeRemoved(ServletContextAttributeEvent arg0) {
		System.out.println("监听:删除:"+arg0.getName()+":"+arg0.getValue());
		
	}

	@Override
	public void attributeReplaced(ServletContextAttributeEvent arg0) {
		System.out.println("监听:替换:"+arg0.getName()+":"+arg0.getValue());
		
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷学习被我发现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值