¿Qué es una sesión?

"Implantación de aplicaciones web"

Una sesión es una serie de comunicaciones entre un cliente y un servidor en la que se realiza un intercambio de información. Por medio de una sesión se puede hacer un seguimiento de un usuario a través de una aplicación. El tiempo de vida de una sesión comienza cuando un usuario se conecta por primera vez a un sitio web, pero su finalización puede estar relacionada con tres circunstancias.

- Cuando se abandona el sitio web.

- Cuando se alcanza un tiempo de inactividad que es previamente establecido, en este caso la sesión es automáticamente eliminada. Si el usuario siguiera navegando, se crearía una nueva sesión.

- Se ha cerrado o reiniciado el servidor.

Una posible aplicación de la sesiones es el comercio electrónico. También se utilizan para la indentificación de usuarios. El manejo de las sesiones impide el intercambio de datos entre ellas, ya que se trata de información específica para cada usuario e incluso si se trata del mismo usuario.

Manejo de sesiones

"Implantación de aplicaciones web"

En JSP las acciones que se pueden realizar sobre las sesiones se lleva a cabo mediante la interface HttpSession y los métodos que implementa. Esta interfaz está incluida dentro del paquete javax.servlet.http y es utilizada por el contenedor de páginas JSP para crear una sesión entre el servidor y el cliente.

Para obtener la sesión de un usuario se utiliza el método getSession() que devuelve una interfaz de tipo HttpSession:

<%
HttpSession sesion=request.getSession(); 
%>

Una vez creado el objeto de tipo sesión es posible acceder a una serie de datos sobre la misma. Uno de estos datos es idSession que devuelve un identificador único asociado a una sesión:

<%
HttpSession sesion=request.getSession();
out.println("IdSesion: "+sesion.getId());
%>

 

Guardar objetos

"Implantación de aplicaciones web"

Para guardar un objeto en una sesión se utiliza el método setAttribute(). Este método utiliza dos argumentos:

- El primero es el nombre que identificará a esa variable.

- El segundo es el dato que se va a guardar.

SetAttribute(java.lang.String name, java.lang.Object value)

Ejemplo de como guardar un objeto en una sesión:

<%
HttpSession sesion=request.getSession();
String nombre="Santiago"; 
sesion.setAttribute("usuario",nombre);
%>

Nótese que el segundo parámetro es un Object, por lo tanto las variables que contenga tipos de datos primitivos (int, char, etc.) nose puede introducir sin realizar una conversión.

Recuperar objetos

"Implantación de aplicaciones web"

Para poder recuperar un objeto de una sesión se usa el método get.Attribute().

Siguiendo el ejemplo anterior, recuperaremos el nombre de usuario y lo mostraremos en la página.

<%
HttpSession sesion=request.getSession();
out.println(sesion.getAttribute("usuario"));
%>

Cuando este método devuelve el objeto, no establece en ningún momento de qué tipo de objeto se trata(String, Vector...).

Destruir sesión

"Implantación de aplicaciones web"

Como se ha visto, los datos almacenados por las sesiones pueden destruirse en tres casos:

- Cuando se abandona el sitio web.

- Cuando se alcanza el tiempo máximo permitido de inactividad de un usuario (timeout).

- Se ha cerrado o reiniciado el servidor.

También se puede forzar a que una sesión sea destruida mediante el método invalidate().

<%
HttpSession sesion=request.getSession();
sesion.invalidate(); 
%>