application的监听器

本文介绍了监听器在应用程序中的作用,特别是ServletContextListener接口如何用于监听application状态变化。同时,通过ServletContextAttributeListener接口,可以实现对application属性的监控。这些监听功能可以应用于在线人数统计等场景。

监听器的概念

1.application的状态进行监听需要使用到一个接口ServletContextListener该接口中的方法如下:

public void contextlnitialized(ServletContextEvent sce)
初始化方法,在创建application内置对象的时候调用该方法,
该内置对象是在启动服务器的时候创建

public void contextDestroyed(ServletContextEvent sce)
销毁的时候调用该方法

对application的状态变化监听

  <!-- 配置性监听器 -->
  <listener>
  		<listener-class>com.xie.listener.ApplicationListener</listener-class>
  </listener>
package com.xie.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ApplicationListener implements ServletContextListener{
	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("初始化application内置对象");
	}

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("销毁application的时候调用!");
	}

}

对application的属性进行监听

要对属性进行监听需要使用到另外一个接口ServletContextAttributeListener,该接口中的方法有

void attributeAdded(ServletContextAttributeEvent scab)
增加属性的时候触发

void attributeRemoved(ServletContextAttributeEvent scab)
删除属性的时候触发

void attributeReplaced(ServletContextAttributeEvent scab)
替换属性的时候调用该方法
监听属性
package com.xie.listener;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;

public class ApplicationAttributeListener implements ServletContextAttributeListener{

	@Override
	public void attributeAdded(ServletContextAttributeEvent event) {
		System.out.println("增加新的属性触发:"+event.getName()+"="+event.getValue());
	}

	@Override
	public void attributeRemoved(ServletContextAttributeEvent event) {
		System.out.println("删除属性触发:"+event.getName()+"="+event.getValue());
	}

	@Override
	public void attributeReplaced(ServletContextAttributeEvent event) {
		System.out.println("替换属性触发:"+event.getName()+"="+event.getValue());
	}

}

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.getServletContext().setAttribute("username", "尼古拉斯");
		req.getServletContext().setAttribute("username", "斯巴达");
		req.getServletContext().removeAttribute("username");
		
	}
 <!-- 配置性监听器 -->
  <listener>
  		<listener-class>com.xie.listener.ApplicationAttributeListener</listener-class>
  </listener>

在这里插入图片描述
以上是对application内置对象的监听,可以结合session内置对象的监听实现在线人数统计等功能

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值