23
Feb

Classes Java que você só ouviu falar - javax.servlet.http.HttpSessionBindingListener

Nesse post continuo a abordar algumas classes Java que dificilmente você já utilizou. Nesse caso veremos a interface javax.servlet.http.HttpSessionBindingListener.

Essa interface quando implementada por uma classe e uma instância dessa classe é colocada na sessão, o método valueBound é invocado, notificando que o objeto foi adicionado à sessão. Quando o objeto é retirado da sessão (ou substituído) o método valueUnbound é invocado.

A grande diferença entre essa interface e os outros listeners, é que ela é implementada no próprio objeto, enquanto que os outros listeners são objetos externos notificados de eventos.

A seguir vemos um objeto que implementa o listener:

package br.com.amadei.blog.listener;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class Person implements HttpSessionBindingListener {

	@Override
	public void valueBound(HttpSessionBindingEvent event) {
		System.out.println("Value bound: " + event);
	}

	@Override
	public void valueUnbound(HttpSessionBindingEvent event) {
		System.out.println("Value unbound: " + event);
	}

}


Uma vez que esse objeto é colocado na sessão conforme código a seguir:

	Person person = new Person();
	session.setAttribute("person", person);


O seguinte é impresso no console, mostrando que nosso listener foi notificado:


Value bound: javax.servlet.http.HttpSessionBindingEvent[source=org.apache.catalina.session.StandardSessionFacade@1d38b87]

 

Quando o objeto é removido, temos o seguinte impresso:


Value unbound: javax.servlet.http.HttpSessionBindingEvent[source=org.apache.catalina.session.StandardSessionFacade@1d38b87]

Você deve ter reparado que não houve alteração no web.xml para registro do listener. Realmente, não é necessário nada além da implementação da interface para que o objeto seja notificado que ELE foi associado à sessão.

É isso. Agora cabe a você encontrar um caso de uso para aplicar essa funcionalidade.


free b2evolution skin