En entradas anteriores se ha visto cómo se pasan parámetros de una página a otra. En una web en el que hay un sistema de registro de usuarios, cuando un usuario ha iniciado sesión y navega por sus diferentes páginas, cada una de las páginas debe tener acceso a los datos de ese usuario (id, nombre,…). Con los métodos GET y POST aprendidos anteriormente, en cada llamada a la página siguiente habría que ir pasando estos parámetros, lo que hace que todo se haga más lioso, con más líneas de código y menos óptimo. Por eso, para estos casos se hace uso de las variables de sesión, donde cada página podrá acceder a las variables globales de todo el proyecto.
Cuando un cliente solicita una URL al servidor, este reserva memoria para ese cliente y le da una id. A esta zona de memoria se le llama Sesión. Para activar esta zona de memoria, en el código de la web, en la página donde se logea el usuario, se usa:
HttpSession sesion=request.getSession(true);
Este código solo se escribe una vez en todo el proyecto. Para establecer las variables de la sesión se pondría:
sesion.setAttribute("nombre_de_variable",ValorDeVariable);
Para que en otra página se pueda recoger esa variable de sesión, se debe de poner en cada jsp o servlet que lo necesite:
HttpSession sesion=request.getSession(false);
Y despues se obtienen con:
sesion.getAttribute("nombre_de_variable");
Hay que tener en cuenta que la sesión guarda objetos. Para recoger esos objetos hay que hacerle un cast para tomarlo como el tipo de dato que se desee. Por ejemplo, si se quiere establecer una variable entero con valor 4, y despues se quiere obtener, sería haría así:
sesion.setAttribute("nombre_variable_entero",new Integer(4)); ---...--- int variable_entero_que_recojo=(Integer) sesion.getAttribute("nombre_variable_entero");
O para el caso de querer usar una variable de sesión de tipo String:
sesion.setAttribute("nombre_variable_string", "valor_variable_string"); ---...--- String varible_string_que_recojo=sesion.getAttribute("nombre_variable_string").toString();
Por último, cuando se cierre la sesión del usuario, se querrá borrar de memoria todas estas variables, para ello se usa:
sesion.invalidate;
No hay comentarios:
Publicar un comentario