La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Fernando Alonso Blázquez Sesiones 06 de Mayo de 2004.

Presentaciones similares


Presentación del tema: "Fernando Alonso Blázquez Sesiones 06 de Mayo de 2004."— Transcripción de la presentación:

1 Fernando Alonso Blázquez Sesiones 06 de Mayo de 2004

2 Indice ¿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 Ejemplo

3 ¿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 role y permitirle ciertas operaciones y otras no

4 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

5 Cookies 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

6 Reescritura de URLs Idea –El cliente añade ciertos datos extra que identifican la sesión al final de cada URL –El servidor asocia ese identificador con datos que ha guardado acerca de la sesión –Ejemplo: SessionSnoop.java 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 –El servletrunner no soporta reescritura de URLs

7 Campos ocultos de formularios Idea –Incluir campos ocultos con los datos a mantener 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 envios de formularios Ejemplo: ShoppingCart.java

8 Sesiones en Java (Session Tracking) 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

9 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 getValue ( getAttribute en las nuevas APIs) 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 putValue ( setAttribute en las nuevas APIs) con un nombre y un valor Descargar datos de la sesión –Método removeValue ( removeAttribute ) –Método invalidate, descarga una sesión entera

10 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 getValue ( String ) –Devuelve el objeto asociado al nombre dado

11 Métodos de la clase HttpSession getValueNames () –Devuelve un array con los nombres de todos los objetos 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 putValue ( String, Object ) –Asocia el objeto específico a la sesión con el nombre dado removeValue ( String ) –Elimina el objeto asociado a la sesión con el nombre dado

12 Servlet que muestra el número de accesos Servlet ShowSession.java Compilar el servlet javac ShowSession.java Arrancar el servletrunner servletrunner –d path_del_servlet Llamar al servlet desde el navegador


Descargar ppt "Fernando Alonso Blázquez Sesiones 06 de Mayo de 2004."

Presentaciones similares


Anuncios Google