Java中ServletContextAttributeListener监听器详解

ServletContextAttributeListener是对Servlet上下文(ServletContext)增删改的属性进行监听。

方法

//增加属性
public void attributeAdded(ServletContextAttributeEvent scab);
//属性删除
public void attributeRemoved(ServletContextAttributeEvent scab);
//属性替换(第二次设置同一属性)
public void attributeRepalced(ServletContextAttributeEvent scab);

//ServletContextAttributeEvent事件:能取得设置属性的名称与内容
//得到属性名称
public String getName();
//取得属性的值
public Object getValue();

例子

//ServletContext域对象中属性的变更的事件监听器
package webtest.listener;
import java.text.MessageFormat;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
public class MyServletContextAttributeListener implements
        ServletContextAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent scab) {
        String str =MessageFormat.format(
                "ServletContext域对象中添加了属性:{0},属性值是:{1}"
                ,scab.getName()
                ,scab.getValue());
        System.out.println(str);
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent scab) {
        String str =MessageFormat.format(
                "ServletContext域对象中删除属性:{0},属性值是:{1}"
                ,scab.getName()
                ,scab.getValue());
        System.out.println(str);
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent scab) {
        String str =MessageFormat.format(
                "ServletContext域对象中替换了属性:{0}的值"
                ,scab.getName());
        System.out.println(str);
    }
}
//web.xml配置监听器
<listener>
   <listener-class>webtest.listener.MyServletContextAttributeListener</listener-class>
</listener>
//Test.jsp测试页面
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
  <body>
        <%
           //往application域对象中添加属性
           application.setAttribute("name", "51gjie");
          //替换application域对象中name属性的值
           application.setAttribute("name", "51gjie.com");
           //移除application域对象中name属性
           application.removeAttribute("name");
           %>
  </body>
</html>

这样ServletContextListener监听器成功监听到了ServletContext域对象(application)中的属性值的变化情况。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。