Java如何在更改会话属性时收到通知?

实现HttpSessionAttributeListener将会使servlet容器通知您有关会话属性的更改。通知采用HttpSessionBindingEvent对象的形式。该getName()对象上的on告诉属性的名称,而getValue()方法告诉该属性被添加,替换或删除的值。

package org.nhooo.example.servlet;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class SessionAttributeListener implements HttpSessionAttributeListener {

    public void attributeAdded(HttpSessionBindingEvent event) {
        // 将属性添加到会话时,将调用此方法。
        // 下面的行显示会话属性名称及其值。
        System.out.println("Session attribute added: ["
                + event.getName() + "] = [" + event.getValue() + "]");
    }

    public void attributeRemoved(HttpSessionBindingEvent event) {
        // 从会话中删除属性时,将调用此方法。
        System.out.println("Session attribute removed: ["
                + event.getName() + "] = [" + event.getValue() + "]");
    }

    public void attributeReplaced(HttpSessionBindingEvent event) {
        // 在会话中替换礼节时调用此方法。
        System.out.println("Session attribute replaced: ["
                + event.getName() + "] = [" + event.getValue() + "]");
    }
}

侦听器准备就绪后,请不要忘记在Web应用程序部署描述符web.xml文件中对其进行配置。