11

Click here to load reader

Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Embed Size (px)

Citation preview

Page 1: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Sesión en Servlets

31 de Marzo de 2010

Page 2: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Í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• Métodos de la clase HttpSession

Page 3: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

¿Por qué seguir la trayectoria de usuarios?

• Cuando los clientes de una tienda on-line añaden artículos a su cesta de la compra, ¿cómo sabe el servidor lo que hay ya en sus cestas de la compra?

• Cuando los clientes deciden confirmar el pedido, ¿cómo sabe el pedido cuál de las cestas de la compra previamente creadas es la suya?

• En un Sistema de Información Empresarial, es importante saber qué usuario está realizando operaciones para adjudicarle un “rol” y permitirle ciertas operaciones y otras no

Page 4: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Formas de seguir la trayectoria de usuarios

• HTTP es un protocolo “sin estado”– Cada vez que un cliente pide una página Web,

abre una conexión separada con el servidor Web y el servidor no mantiene automáticamente información contextual acerca del cliente

• Servlets – Permiten obtener y mantener una determinada

información acerca de un cliente– Información accesible a diferentes servlets o

entre diferentes ejecuciones de un mismo servlet

• Tres soluciones típicas– Cookies– Reescritura de URLs– Campos ocultos de formularios

Page 5: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Cookies (NO)

• Objetos de la clase Cookie– Permite guardar información relativa a un

usuario a lo largo de sus distintos accesos

• Se almacenan en los equipos de los clientes– El cliente debe soportar cookies– Pueden ser desactivadas por el cliente– El navegador es el encargado de almacenarlas

• Se transmiten en las cabeceras cuando se realiza la comunicación HTTP

• Las cookies se implementan como una colección y se usan mediante los objetos integrados HttpServletRequest y HttpServletResponse

Page 6: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Reescritura de URLs (NO)• Idea

– El cliente añade ciertos datos extra que identifican la sesión al final de cada URL• http://host/path/servlet/name?jsessionid=1234

– El servidor asocia ese identificador con datos que ha guardado acerca de la sesión

• Ventajas– Funciona incluso si las Cookies no son

soportadas o están desactivadas

• Desventajas– Se deben codificar todas las URLs referentes

al sitio propio– Todas las páginas deben generarse

dinámicamente– Funciona mal para links desde otros sitios

Page 7: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

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 están desactivadas

• Desventajas– Cantidad de procesamiento tedioso– Todas las páginas deben ser el resultado de

envíos de formularios

Page 8: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Sesiones en Java (Session Tracking) (SI)• Los objetos de la sesión se guardan en el

servidor• Se pueden guardar objetos arbitrarios

dentro de una sesión• Las sesiones se asocian automáticamente

al cliente vía Cookies o Reescritura de URLs– Como una caja negra para el cliente, el sistema

se encarga de utilizar el método apropiado para mantener la sesión, bien mediante cookies o mediante reescritura de URLs

• Clase HttpSession de la Servlet API 2.0– Existen APIs más actuales para trabajar con

servlets que vienen con la distribución de J2EE

Page 9: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Cosas esenciales para trabajar con sesiones• Acceder al objeto sesión

– Mediante el método request.getSession() se obtiene un objeto HttpSession

• Obtener información asociada con la sesión– Mediante el método getAttribute del

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

• Guardar información en una sesión– Usar el método setAttribute con un

nombre y un valor

Page 10: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Métodos de la clase HttpSession

• getCreationTime() – Devuelve la hora de creación de la sesión en

milisegundos desde las 00:00 del 01/01/1970

• getId() – Devuelve el identificador asignado a la sesión

• getLastAccessedTime() – Devuelve la hora de la última petición al

servlet con el identificador asignado a esa sesión

• getSessionContext()– Devuelve el contexto al que está asociada la

sesión

• getAttribute(String) – Devuelve el objeto asociado al nombre dado

Page 11: Sesión en Servlets 31 de Marzo de 2010. Índice ¿Por qué seguir la trayectoria de usuarios? Formas de seguir la trayectoria de usuarios –Cookies –Reescritura

Métodos de la clase HttpSession

• getAttributes() – Devuelve un Enumeration con los nombres

de todos los atributos asociados a la sesión• invalidate()

– Invalida la sesión y la elimina de su contexto• isNew()

– Una sesión se considera “new” si ha sido creada por el servidor pero el cliente aún no se ha reconocido asociándose a ella

• setAttribute(String,Object) – Asocia el objeto específico a la sesión con el

nombre dado• removeAttribute(String)

– Elimina el objeto asociado a la sesión con el nombre dado