Variables de sesion JSP
A continuacion presento un ejemplo simple que segui de un tutorial sobre la utilizacion de las variables de sesion en jsp.
Primero debemos de agregar la siguiente linea en todas las paginas en donde se va a aplicar la sesion.
<%@ page session='true' %>
//Creando el objeto session
HttpSession sesion=request.getSession();
//Imprimiendo el id de session.
out.println("IdSesion:"+sesion.getId());
//Imprimiendo el momento en que se creo la sesion
out.println("<br>Creación: "+sesion.getCreationTime());
//Casteando el momento en que se creo la sesion:
Date momento=new Date(sesion.getCreationTime());
//Imprimendo el momento en que se creo la session casteado.
out.println("<BR>Creación: "+momento);
//Conocer la fecha y hora en el que el cliente accedio al servidor con el que se creo la session
Date acceso=new Date(sesion.getLastAccessedTime());
out.println("<br>Último acceso: "+acceso+"<br>");
/* Teniendo en cuenta el momento en que se creo la session y la ultima vez que se accedio al servidor,
se puede conocer el tiempo que lleva el cliente conectado al servidor, lo que es el mismo tiempo que lleva el usuario navegando por las paginas jsp. */
long longDuracion=sesion.getLastAccessedTime()-sesion.getCreationTime();
Date duracion=new Date(longDuracion);
out.println("Duracion:"+duracion.getMinutes()+"min."+duracion.getSeconds()+"seg");
//El metodo isNew() se puede saber si la sesion creada es nueva o se esta tomando de una previamente creada
out.println("<br>nueva: "+sesion.isNew());
/*
Para guardar un objeto en una sesión se utiliza el método setAttribute(). Este método utiliza dos argumentos:
SetAttribute(java.lang.String name, java.lang.Object value)
*/
//Guardando una cadena de texto en la sesion.
sesion.setAttribute("trabajo","Paginas de JSP");
Integer edad=new Integer(26);
sesion.setAttribute("edad",edad);
//Ejemplo con vectores:
Vector v=new Vector();
v.addElement(new String("Lunes"));
v.addElement(new String("Martes"));
v.addElement(new String("Miercoles"));
v.addElement(new String("Jueves"));
v.addElement(new String("Viernes"));
v.addElement(new String("Sábado"));
v.addElement(new String("Domingo"));
sesion.setAttribute("diasSemana",v);
//Cabe resaltar que podemos tener sesiones de tipo objeto.
%>
Primero debemos de agregar la siguiente linea en todas las paginas en donde se va a aplicar la sesion.
<%@ page session='true' %>
Pagina en donde se crea la sesion.
<%//Creando el objeto session
HttpSession sesion=request.getSession();
//Imprimiendo el id de session.
out.println("IdSesion:"+sesion.getId());
//Imprimiendo el momento en que se creo la sesion
out.println("<br>Creación: "+sesion.getCreationTime());
//Casteando el momento en que se creo la sesion:
Date momento=new Date(sesion.getCreationTime());
//Imprimendo el momento en que se creo la session casteado.
out.println("<BR>Creación: "+momento);
//Conocer la fecha y hora en el que el cliente accedio al servidor con el que se creo la session
Date acceso=new Date(sesion.getLastAccessedTime());
out.println("<br>Último acceso: "+acceso+"<br>");
/* Teniendo en cuenta el momento en que se creo la session y la ultima vez que se accedio al servidor,
se puede conocer el tiempo que lleva el cliente conectado al servidor, lo que es el mismo tiempo que lleva el usuario navegando por las paginas jsp. */
long longDuracion=sesion.getLastAccessedTime()-sesion.getCreationTime();
Date duracion=new Date(longDuracion);
out.println("Duracion:"+duracion.getMinutes()+"min."+duracion.getSeconds()+"seg");
//El metodo isNew() se puede saber si la sesion creada es nueva o se esta tomando de una previamente creada
out.println("<br>nueva: "+sesion.isNew());
/*
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)
*/
//Guardando una cadena de texto en la sesion.
sesion.setAttribute("trabajo","Paginas de JSP");
Integer edad=new Integer(26);
sesion.setAttribute("edad",edad);
//Ejemplo con vectores:
Vector v=new Vector();
v.addElement(new String("Lunes"));
v.addElement(new String("Martes"));
v.addElement(new String("Miercoles"));
v.addElement(new String("Jueves"));
v.addElement(new String("Viernes"));
v.addElement(new String("Sábado"));
v.addElement(new String("Domingo"));
sesion.setAttribute("diasSemana",v);
//Cabe resaltar que podemos tener sesiones de tipo objeto.
%>
Pagina en donde se recibe la sesion.
<%
HttpSession sesion=request.getSession();
/*Es necesario realizar un casting, para convertir el objeto de tipo genérico al objeto
exacto que se va a usar. */
String nombre=(String)sesion.getAttribute("trabajo");
out.println("Contenido de nombre: "+nombre);
/*
Si no existe ningún objeto almacenado en la sesión bajo el identificador que se utiliza en el
método getAttribute(), el valor devuelto será null. Por ello habrá que prestar especial atención
ya que si se realiza el casting de un valor null el contenedor JSP devolverá un error. Lo mejor en
estos casos es adelantarse a los posibles errores que pueda haber.
*/
if(sesion.getAttribute("trabajo")!=null)
{
String nombre2=(String)sesion.getAttribute("trabajo");
out.println("<br>Contenido de nombre: "+nombre2);
}
Integer edad=(Integer)sesion.getAttribute("edad");
out.println("<br>Edad: "+edad.intValue()+"<br>");
Vector v= (Vector) sesion.getAttribute("diasSemana");
for(int i=0; i<v.size(); i++)
{
out.println("<b>Dia: </b>"+(String)v.get(i)+"<br>");
}
/*
Para recuperar todos los objetos de una sesión se puede hacer uso también del método
getAttributeNames() de la interfaz HttpSession. Para recoger todos los objetos almacenados en
la sesión se recorre el objeto Enumeration que contiene el nombre de todos los objetos que
contiene la sesión y que ha sido devuelto por el método getAttributeNames(). Cada nombre de
atributo de la sesión se utiliza en la llamada a cada método getAttribute(), que devolverá el
objeto correspondiente
*/
Enumeration en=sesion.getAttributeNames();
String nombreAtributo;
while (en.hasMoreElements())
{
nombreAtributo=(String)en.nextElement();
out.println("<b>Atributo:</b>"+nombreAtributo);
if(nombreAtributo.equals("diasSemana"))
{
Vector v2= (Vector)
sesion.getAttribute("diasSemana");
for(int i=0; i<v2.size(); i++)
{
out.println("<br><b>Dia:</b>"+(String)v2.get(i));
}
}
else
out.println("<b>"+sesion.getAttribute(nombreAtributo)+"</b><BR><BR>");
}
/*
COMO SE DESTRUYE UNA SESION
Como se ha visto, los datos almacenados por las sesiones pueden destruirse en tres casos:
- El usuario abandona aplicación web (cambia de web o cierra el navegador)
- Se alcanza el tiempo máximo permitido de inactividad de un usuario (timeout).
- El servidor se para o se reincia.
Pero la situación más probable es querer iniciar las sesiones o dar por finalizada una si se
ha cumplido una o varias condiciones. En este caso no es necesario esperar a que ocurra alguno
de los tres casos citados anteriormente, ya que mediante el método invalidate() es posible
destruir una sesión concreta.
--sesion.invalidate();
*/
sesion.invalidate();
%>