5
4
|
I am reading through head first JSP and servlets. Going through different type of listeners, I came across
HttpSessionBindingListener and HttpSessionAttributeListener .
I was thinking about the difference between the two - I want to see the practical usages in real world examples of those two listeners. I tested
HttpSessionBindingListener by implementingvalueBound() and valueUnBound() - why would an object need to know whether it has been added or not?
I am pretty confused about the practical usages. Please help in clarifying this.
| |||
add comment |
6
|
The
HttpSessionBindingListener is to be implemented on the class whose instances may be stored in the session, such as the logged-in user.
E.g.
When an instance of this
ActiveUser get set as a session attribute byHttpSession#setAttribute() , then the valueBound() will be invoked. When it get removed by either HttpSession#removeAttribute() , or an invalidate of the session, or get replaced by anotherHttpSession#setAttribute() , then the valueUnbound() will be invoked.
Here are some real world use cases:
The
HttpSessionAttributeListener is to be implemented as an application wide @WebListener which get invoked when any attribute is added, removed or replaced in the HttpSession . Continuing with the above ActiveUser example, this is particularly useful if you can't modify the ActiveUser class to implement HttpSessionBindingListener (because it's 3rd party or so), or when you want to make use of a "marker interface" on an arbitrary amount of classes so that you can do the listening job in a single central place.
Here's a real world use case:
| ||||||||||||
|