监听器的概念
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内置对象的监听实现在线人数统计等功能