Getting notification when bounded/unbounded to a HTTP session

后端 未结 1 632
面向向阳花
面向向阳花 2020-12-06 13:26

How can i get notified when my Object gets bounded/unbounded to a session object of HTTP.

相关标签:
1条回答
  • 2020-12-06 14:16

    Let the object's class implement 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.
        }
    
    }
    

    If you have no control over the object's class code and thus you can't change its code, then an alternative is to implement 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.
            }
        }
    
    }
    

    Note: when you're still on Servlet 2.5 or older, replace @WebListener by a <listener> configuration entry in web.xml.

    0 讨论(0)
提交回复
热议问题