6

オブジェクトがHTTPのセッションオブジェクトにバインド/バインド解除されたときに通知を受け取るにはどうすればよいですか。

4

1 に答える 1

7

オブジェクトのクラスにを実装させHttpSessionBindingListenerます。

public class YourObject implements HttpSessionBindingListener {

    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        // The current instance has been bound to the HttpSession.
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
        // The current instance has been unbound from the HttpSession.
    }

}

オブジェクトのクラスコードを制御できず、コードを変更できない場合は、を実装することもできますHttpSessionAttributeListener

@WebListener
public class YourObjectSessionAttributeListener implements HttpSessionAttributeListener {

    @Override
    public void attributeAdded(HttpSessionBindingEvent event) {
        if (event.getValue() instanceof YourObject) {
            // An instance of YourObject has been bound to the session.
        }
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent event) {
        if (event.getValue() instanceof YourObject) {
            // An instance of YourObject has been unbound from the session.
        }
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent event) {
        if (event.getValue() instanceof YourObject) {
            // An instance of YourObject has been replaced in the session.
        }
    }

}

注:サーブレット2.5以前を使用している場合は@WebListener、の<listener>構成エントリに置き換えてweb.xmlください。

于 2012-06-29T13:12:38.100 に答える