lang="es"> Servlets: Atributos de petición, sesión, aplicación y cookies
Recursos para formacion

Servlets: Atributos de petición, sesión, aplicación y cookies

Durante la programación de una aplicación web nos encontramos que tenemos necesidad de conservar el valor de las variables. En una aplicación de escritorio, podemos controlar cuando queremos borrar una variable, por lo que no aparece ese problema, pero en una aplicación web, el tema es bastante mas delicado. Recordemos que el protocolo http no esta orientado a sesion, eso hace que en cada conexion TODOS los datos que tengamos a mano, sean nuevos. Nuestro servidor, no recordara nada acerca de si ese cliente se ha conectado hace un momento, o no se ha conectado nunca. Se ha logonado o no, ….Toda esa gestion, nos la debera hacer nuestro contenedor, y lo primero que debemos establecer es el alcance de nuestras variables, que podria ser el siguiente:

 

Muchas veces las variables van a tener que estar disponibles mas alla del objeto que las creo. Hemos visto que podemos ceder el control de un servlet a otro, pero podemos necesitar la información que el primero a preparado. Para poder compartir la información, disponemos de tres objetos:

HttpServletRequest . Que representa nuestra request, y nos permite guardar información hasta que se devuelve el control al usuario

HttpSession, Que representa nuestra sesión y que guardara la información de las variables durante toda la sesión

ServletContext. Que representa al servlet y como consecuencia es capaz d guardar la información desde que se crea la variable, hasta que el servidor se cierre.

 

Todos ellos, dispone de métodos setAttribute y getAttribute para guardar la información que deseemos. La forma de gestionar la información siempre es igual

objeto.setAttribute(String,valor)

Guarda el contenido de ”valor”, sea el tipo que sea (String, objetos, primitivas,…) en el entorno que represente objeto y lo identifica con la String facilitada.

Tipo recup = (Tipo) objeto.getAttribute(String);

Recupera el valor que se haya asociado a la String facilitada. Estos métodos trabajan siempre con Object, por lo que es necesario hacer un cast para indicar el tipo de objeto

Ejemplos para alcance aplicación:

Ejemplos para alcance Session:

Ejemplos para alcance request:

En todos los casos, deberemos estar atentos a que el objeto se haya creado (comprobación de null), y que sea del tipo correcto.

 

El objeto HttpSession

Este objeto lo debemos revisar con más atención, ya que su ciclo de vida depende de la programación.

Este objeto dispone de los siguientes métodos

getId. devuelve un identificador único generado para cada sesión.

isNew. devuelve true si el cliente (navegador) nunca ha visto la sesión. Devuelve false para sesión preexistentes.

getCreationTime. Devuelve la hora, en milisegundos desde 1970, en la que se creó la sesión. Para obtener un valor útil para impresión, pasamos el valor al constructor de Date o al método setTimeInMillis de GregorianCalendar.

getLastAccessedTime. Esto devuelve la hora, en milisegundos desde 1970, en que la sesión fue enviada por última vez al cliente.

getAttributesName(): devuelve un array con todos los nombres de los objetos asociados con la sesión.

invalidate(): invalida la sesión en curso.

removeAttribute(String): elimina el objeto asociado con una determinada clave.

CADUCIDAD DE LA SESION:

Los elementos almacenados no se liberan hasta que no ss consume todo el tiempo, o se ejecuta un invalidate()

Cookies

Las cookies son pequeños retazos de información que podemos dejar en el ordenador del usuario.

Salir de la versión móvil