2. ¿Qué es una sesión?
Java Web
La sesión representa una forma de identificar a un cliente en particular del
lado del servidor, y poder mantener un conjunto de valores determinados
únicamente para ese cliente a lo largo de un periodo de tiempo.
Técnicamente, es una espacio de memoria que reserva el Servlet
Container para un cliente, identificando este espacio con un identificador
de sesión o sessionID.
3. El sessionID
Java Web
El sessionID es una cadena de caracteres sumamente larga, que combina
números y letras, e identifica unívocamente a un cliente dentro del
“universo” de clientes. Por su parte, el protocolo HTTP es “stateless” o sin
estado, con lo cual para que el servidor pueda determinar quien es el
cliente, necesita obtener algún identificador. El identificador es
precisamente el sessionID, que viaja permanentemente entre el cliente y
servidor de forma transparente para usuarios finales y también para
desarrolladores. Gracias al sessionID, el servidor podrá brindarle un “trato
personalizado” al cliente.
4. Session Tracking
Java Web
Existen 4 técnicas para el manejo de la sesión:
- Cookies
- Hidden Form Field
- HttpSession
- URL Rewriting
5. Cookies
Java Web
Las cookies son pequeñas piezas de información que son persistidas en el
cliente, una cookie tiene un nombre y un valor, cuenta con algunos
atributos como comentario, path, dominio, máxima edad y versión.
Ventajas:
- Técnica simple para mantener el estado
- Cookies son mantenidas del lado cliente
Desventajas:
- Si el cliente no tiene las cookies activas no funciona
- Solo información en formato texto puede ser almacenada
7. Hidden Form Field
Java Web
En cada formulario agregamos un textfield no visible que mantiene
información sobre el estado.
Ventajas:
- Funciona siempre independientemente de si las cookies están o no activas
Desventajas:
- El server es el encargado de mantener el estado
- Necesitamos un FORM por pagina
- Solo información en formato texto puede ser almacenada
9. HttpSession
Java Web
El server crea un sesión ID para cada usuario, para lograr esto se usa un
identificador llamado JSESSIONID el cual es almacenado en una cookie
Ventajas:
- Podemos almacenar cualquier tipo de datos
Desventajas:
- Si las cookies no están activas debemos incluir el JSESSION en la URL
10. HttpSession métodos
Java Web
El objeto HttpSession provee varios métodos útiles:
- getId(): Retorna el unique identifier para la sesión.
- Invalidate(): Invalida la sesion.
- getCreationTime(): El tiempo medido en milisegundos desde January 1, 1970
GMT.
- setAttribute(String name, Object value): Permite asignar un objeto a la sesión
actual.
- getAttribute(String name): Permite recuperar un objeto de la sesión.
11. URL Rewriting
Java Web
La sesion del lado servidor es localizada usando JSESSIONID el cual es
salvado en una cookie, si la cookie no puede salvarse en el cliente
podemos agregar el identificador en la URL
Ventajas:
- Funciona siempre independientemente de si las cookies están o no activas
Tenemos dos métodos para incluir el JSESSIONID en la URL.
- response.encodeURL(): Incluye el sesión ID si es requerido sino la URL
permanece sin cambios.
- response.encodeRedirectURL: Incluye el sesión ID para luego usar con
el metodo sendRedirect().