martes, 20 de enero de 2009

Listeners en el api de servlet y colecciones en java.util

Listeners en servlets
  • application - ServletContext
  • javax.servlet.ServletContextListener
  • javax.servlet.ServletContextAttributeListener
  • session
  • javax.servlet.http.HttpSessionListener
  • javax.servlet.http.HttpSessionAttributeListener
  • javax.servlet.http.HttpSessionActivationListener
  • javax.servlet.http.HttpSessionBindingListener
  • request - event
  • javax.servlet.ServletRequestListener
  • javax.servlet.ServletRequestAtributeListener

Ejemplos de creacion de listeners y activacion en web.xml

¿para qué sirve escuchar (y hacer algo en ese momento) cuando arranca la aplicacion o cuando se conecta por primera vez un usuario nuevo a la aplicación ?
Cuando arranca la aplicación es el momento oportuno para iniciar los recursos comunes a los componentes de la aplicación o situar en un estado concreto la información. Ejemplos de esto pueden ser: conectar con la base de datos, comenzar con una información especifica (zoo con algunos animales dentro...)...
Igualmente es interesante poder limpiar o cambiar recursos al parar o desactivar la aplicación, por ejemplo: desconectar de la base de datos, escribir mail de desactivación, escribir un registro en un fichero ...

Cuando se conecta un usuario es muy util saberlo para inicializar aquellos objetos que el usuario puede utilizar, por ejemplo: el carrito de la compra, servicios, colecciones de objetos ...
Igualmente cuando se desconecta el usuario es util para limpiar recursos asociados con su uso (session)






Ejercicio continuacion de zoo: implementacion de listener de session y de aplicacion

Iniciar la session de usuario con las colecciones iniciadas.
Finalizar la session de usuario añadiendo sus colecciones a un atributo de aplicacion que se llamara "todosLosAnimales" y que será una coleccion de animales de todos los usuarios
session
al iniciar la aplicacion...
arg0.getSession().getServletContext().setAttribute("todosLosAnimales", coleccion);
al finalizar la aplicacion...
List coleccion=arg0.getSession().getServletContext().getAttribute("todosLosAnimales");
coleccion.addAll(arg0.getSession().getAttribute("animales"));





1 comentario:

  1. no me quedo muy claro ese ejemplo, pero si me dio una idea general gracias..

    ResponderEliminar