Listener 监听器

listener:监听器

作用:监听web中的三个域对象 :ServletContext  ServletRequest  HttpSession
监听内容:

 
 
监听三个对象的创建和销毁
监听三个对象属性的变化
监听session中的javabean的状态
注意:listener全部是接口
监听三个对象的创建和销毁
ServletContextListener
ServletRequestListener
HttpSessionListener
监听三个对象属性的变化
ServletContextAttributeListeren
ServletRequestAttributeListeren
HttpSessiontAttributeListeren
监听session中的javabean的状态
HttpSessionActiveationListener(钝化和活化)
HttpSessionBindingListener(绑定和解绑)
使用步骤:
1,编写一个类 实现接口
2, 重写方法
3,编写配置文件(大部分都需要)
监听三个对象的创建和销毁
ServletContextListener
创建;服务器启动的时候会为每一个项目都创建一个ServletContextListener
销毁:服务器关闭的时候,或者项目被移除的时候
加载配置文件

ServletRequestListener
创建:请求来的时候被创建
销毁:响应生成的时候

HttpSessionListener
一个浏览器对应一个session
创建:request.getSession();
jsp中有内置对象session
jsp访问的时候session就创建了
销毁:三种情况:
session超时:默认30分钟
手动销毁session invalidate
服务器非正常关闭
HttpSessionBindingListener(绑定和解绑)(不需要配置):
检测javabean是否添加到session或从session中移除
HttpSessionActiveationListener(钝化和活化)
钝化:javabean从session中序列化到磁盘上,从内存到硬盘
活化:javabean从磁盘上序列化到session中,从硬盘到内存
可以通过配置文件修改javabean什么时候钝化


监听三个对象属性的变化
public class MyContextAttriLis implements ServletContextAttributeListener {

	@Override
	public void attributeAdded(ServletContextAttributeEvent arg0) {
		// 
		System.out.println("在servletcontext中添加一个属性"+arg0.getName());
	}

	@Override
	public void attributeRemoved(ServletContextAttributeEvent arg0) {
		// 
		System.out.println("在servletcontext中移除一个属性"+arg0.getName());
	}

	@Override
	public void attributeReplaced(ServletContextAttributeEvent arg0) {
		// 
		System.out.println("在servletcontext中替换一个属性"+arg0.getName());
	}
public class MyRequestListener implements ServletRequestListener {

	@Override
	public void requestDestroyed(ServletRequestEvent arg0) {
		// 
		System.out.println("请求销毁了");
	}

	@Override
	public void requestInitialized(ServletRequestEvent arg0) {
		// 
		System.out.println("请求创建了");

	}
public class MyServletContextLis implements ServletContextListener{

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		// 销毁操作
		System.out.println("ServletContext销毁了");
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		// 创建操作
		System.out.println("ServletContext创建了");
		
	}
监听创建、销毁以及属性变化时需要在web中编写配置文件
filter>
    <filter-name>HelloFilter</filter-name>
    <filter-class>com.xxx.filter.HelloFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HelloFilter</filter-name>
    <url-pattern>/demo1</url-pattern>
  </filter-mapping>
filter-mapping的子标签
filter-name:匹配那个filter对象
url-pattern:匹配过滤的路径
监听session中的javabean的状态
public class Person implements HttpSessionBindingListener{
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public void valueBound(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("person对象绑定到session中");
	}
	@Override
	public void valueUnbound(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("person对象从session中解绑");
	}
	
public class Person2 implements HttpSessionActivationListener{
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public void sessionDidActivate(HttpSessionEvent arg0) {
		//活化
		System.out.println("对象序列化到内存上  活化");
	}
	@Override
	public void sessionWillPassivate(HttpSessionEvent arg0) {
		
		// 钝化
		System.out.println("对象序列化到磁盘上  钝化");
	}
	














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值