Sunteți pe pagina 1din 11

Sesin en Servlets

9 de Marzo de 2011

ndice
Por qu seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios
Cookies Reescritura de URLs Campos ocultos

Sesiones en Java (Session Tracking) Cosas esenciales para trabajar con sesiones Mtodos de la clase HttpSession

Por qu seguir la trayectoria de usuarios?


Cuando los clientes de una tienda on-line aaden artculos a su cesta de la compra, cmo sabe el servidor lo que hay ya en sus cestas de la compra? Cuando los clientes deciden confirmar el pedido, cmo sabe el pedido cul de las cestas de la compra previamente creadas es la suya? En un Sistema de Informacin Empresarial, es importante saber qu usuario est realizando operaciones para adjudicarle un rol y permitirle ciertas operaciones y otras no

Formas de seguir la trayectoria de usuarios


HTTP es un protocolo sin estado
Cada vez que un cliente pide una pgina Web, abre una conexin separada con el servidor Web y el servidor no mantiene automticamente informacin contextual acerca del cliente
Permiten obtener y mantener una determinada informacin acerca de un cliente Informacin accesible a diferentes servlets o entre diferentes ejecuciones de un mismo servlet Cookies Reescritura de URLs Campos ocultos de formularios

Servlets

Tres soluciones tpicas

Cookies (NO)
Objetos de la clase Cookie
Permite guardar informacin relativa a un usuario a lo largo de sus distintos accesos
El cliente debe soportar cookies Pueden ser desactivadas por el cliente El navegador es el encargado de almacenarlas

Se almacenan en los equipos de los clientes

Se transmiten en las cabeceras cuando se realiza la comunicacin HTTP Las cookies se implementan como una coleccin y se usan mediante los objetos integrados HttpServletRequest y HttpServletResponse

Reescritura de URLs (NO)


Idea
El cliente aade ciertos datos extra que identifican la sesin al final de cada URL

El servidor asocia ese identificador con datos que ha guardado acerca de la sesin

http://host/path/servlet/name?jsessionid=1234

Ventajas

Funciona incluso si las Cookies no son soportadas o estn desactivadas Se deben codificar todas las URLs referentes al sitio propio Todas las pginas deben generarse dinmicamente Funciona mal para links desde otros sitios

Desventajas

Campos ocultos de formularios (NO)


Idea
Incluir campos ocultos con los datos a mantener
<INPUT type=hidden name=session value=1234>

Ventajas

Funciona incluso si las Cookies no son soportadas o estn desactivadas Cantidad de procesamiento tedioso Todas las pginas deben ser el resultado de envos de formularios

Desventajas

Sesiones en Java (Session Tracking) (SI)


Los objetos de la sesin se guardan en el servidor Se pueden guardar objetos arbitrarios dentro de una sesin Las sesiones se asocian automticamente al cliente va Cookies o Reescritura de URLs

Como una caja negra para el cliente, el sistema se encarga de utilizar el mtodo apropiado para mantener la sesin, bien mediante cookies o mediante reescritura de URLs

Clase HttpSession de la Servlet API 2.0

Existen APIs ms actuales para trabajar con servlets que vienen con la distribucin de J2EE

Cosas esenciales para trabajar con sesiones


Acceder al objeto sesin
Mediante el mtodo request.getSession() se obtiene un objeto HttpSession

Obtener informacin asociada con la sesin


Se hace un cast al tipo de objeto apropiado Se chequea si el resultado es null

Mediante el mtodo getAttribute del objeto HttpSession

Guardar informacin en una sesin

Usar el mtodo setAttribute con un nombre y un valor

Mtodos de la clase HttpSession


getCreationTime() getId()
Devuelve la hora de creacin de la sesin en milisegundos desde las 00:00 del 01/01/1970
Devuelve el identificador asignado a la sesin Devuelve la hora de la ltima peticin al servlet con el identificador asignado a esa sesin Devuelve el contexto al que est asociada la sesin

getLastAccessedTime()
getSessionContext()

getAttribute(String)

Devuelve el objeto asociado al nombre dado

Mtodos de la clase HttpSession


getAttributes() invalidate()
Devuelve un Enumeration con los nombres de todos los atributos asociados a la sesin
Invalida la sesin y la elimina de su contexto Una sesin se considera new si ha sido creada por el servidor pero el cliente an no se ha reconocido asocindose a ella Asocia el objeto especfico a la sesin con el nombre dado

isNew()

setAttribute(String,Object) removeAttribute(String)

Elimina el objeto asociado a la sesin con el nombre dado

S-ar putea să vă placă și