Вы находитесь на странице: 1из 10

1.

HTTPSESSION
En una transaccin http, cada conexin entre un cliente y un servidor es muy breve. Esta es
una caracterstica tpica de cualquier protocolo sin estado (staless). El protocolo http no
mantiene el estado, es decir, no tiene un mecanismo para saber que una serie de peticiones
(request) provienen de un mismo cliente. Ante esta limitacin, surge la sesin como el
mecanismo adecuado para identificar un usuario que est interactuando con el sitio web.
La sesin puede ser implementada a travs de diferentes opciones:
HttpSession
Campos ocultos HTML(hidden fields)
Cookies
URL Rewriting
La interfaz HttpSession es parte de la API de Servlets y proporciona unaalternativa para
manejar el estado de una aplicacin en un servidor web.

2. OBTENIENDO UNA SESIN


Las sesiones son compartidas por todos los Servlets y jsps accesados por un cliente; por lo
tanto, es comn que se cree un objeto Sesin cuando nos logueamos a un sitio web. Por
otro lado, si nos deslogueamos de un sitio web, la sesin debera ser destruida.
En Java, el objeto HttpSession identifica una sesin y es obtenida utilizando el mtodo
getSession del objeto request. Ejemplo:

Sintaxis:
request.getSession() o request.getSession(true). Retornan la sesin actual si existe; de lo
contrario, crean una nueva.
request.getSession(false). Retorna la sesin actual si existe; de lo contrario, retorna un
objeto nulo.

3. CONTENIDO DE LA SESIN
El objeto HttpSession contiene informacin acerca de la sesin. Para acceder a esta
informacin, existen una serie de mtodos getters de los cuales mostraremos los ms
utilizados:
session.getLastAccessedTime(). La ltima vez que el cliente envi una peticin
asociada con la sesin
session.getCreationTime(). Cuando la sesin fue creada
session.getMaxInactiveInterval(). El intervalo de tiempo mximo (en segundos)
que el Servlet Container mantiene abierta la sesin entre accesos del cliente
session.getAttribute(). Obtiene un objeto que fue almacenado en la sesin

4. ALMACENANDO Y RECUPERANDO OBJETOS DE LASESIN

La utilidad de una sesin radica en su capacidad de actuar como un repositorio donde se


almacenan datos de la aplicacin.
Los datos son almacenados como un par <nombre, valor> siendo valor cualquier objeto
que se desee almacenar en la sesin.
Los mtodos para acceder a los datos son los siguientes:
session.setAttribute(String, Object). Sirve para almacenar objetos en la sesin.
session.getAttribute(String). Sirve para recuperar objetos de la sesin.
Ejemplo:

FINALIZANDO LA SESION
La sesin puede ser finalizada de diferentes formas:
Programticamente
Por tiempo de expiracin
Cuando el usuario cierra el browser
Programticamente:
a) Usando el mtodo invalidate() del objeto session
b) Removiendo todos los objetos de la sesin con el mtodo removeAttribute()
Sintaxis :
removeAttribute(String nombreAtributo)
nombreAtributo es el nombre del atributo a ser removido.

Por tiempo de expiracin:


La sesin es invalidada cuando se cumple un tiempo de inactividad de la sesin. Podemos
definir el tiempo de inactividad mximo de dos formas:
a) utilizando el mtodo setMaxInactiveInterval(int)
Ejemplo:
session.setMaxInactiveInterval(int)
HttpSession Session=request.getsession(true);
session.setMaxInactiveInterval(3600);

Para este ejemplo la sesin tendr un intervalo de tiempo de una hora. El valor va en
segundos.

b) Utilizando la etiqueta <session-config> dentro del archivo web.xml :

5 Cookies
Las sesiones vistas anteriormente basan su funcionamiento en los cookies.
Cuando se hace uso de la interfaz HttpSession de forma interna y totalmente transparente
al programador se est haciendo uso de los cookies. De hecho, cuando a travs de una
pgina JSP se comienza una sesin, se crea un cookie llamado JSSESIONID. La diferencia es
que este cookie es temporal y durar el tiempo que permanezca el navegador ejecutndose,
siendo borrada cuando el usuario cierre el navegador.
El objetivo de utilizar cookies es poder reconocer al usuario en el momento en el que se
conecta al servidor. Una de las pginas que recoge la peticin del usuario puede comprobar
si existe un cookie que ha dejado anteriormente; si es as, sabe que ese usuario ya ha visitado
ese website y, por lo tanto, puede leer valores que le identifiquen. Otro de los usos de los
cookies es ofrecer una personalizacin al usuario. En muchos sitios web es posible elegir el
color de fondo, el tipo de letra utilizado, etc. Estos valores pueden ser almacenados en
cookies de forma que cuando acceda de nuevo a la web y se compruebe la existencia de
esos valores, sern recuperados para utilizarlos en la personalizacin de la pgina tal y cmo
el usuario estableci en su momento.
Un ejemplo que se ha podido encontrar en muchas webs es en el momento de realizar un
registro o solicitar el alta en un rea restringida, ya que en muchas ocasiones existe un
checkbox que cuando se selecciona permite recordar el nombre de usuario a falta de que
slo se escriba la clave.
Utilizando tambin el identificador idSession que se genera en una sesin como ya hemos
visto y guardndolo en el cookie, se pueden mostrar mensajes personalizados en el
momento en el que el usuario acceda de nuevo al website. Para trabajar con cookies, se
utiliza la clase Cookie que est disponible en paquete javax.servlet.http. Por medio de esta
clase, se pueden crear cookies, establecer sus valores y nombres, alguna de sus propiedades,
eliminarlas, leer valores que almacenan, etc.

5.1. Crear un cookie


Un cookie almacenado en el ordenador de un usuario est compuesto por un nombre y un
valor asociado al mismo. Adems, asociada a este cookie pueden existir una serie de
atributos que definen datos como su tiempo de vida, alcance, dominio, etc. Cabe resear
que los cookies no son ms que archivos de texto, que no pueden superar un tamao de

4Kb; adems, los navegadores tan slo pueden aceptar 20 cookies de un mismo servidor
web (300 cookies en total). Para crear un objeto de tipo Cookie, se utiliza el constructor de
la clase Cookie que requiere su nombre y el valor a guardar. El siguiente ejemplo creara un
objeto Cookie que contiene el nombre nombre y el valor objetos.

Tambin, es posible crear cookies con contenido que se genere de forma dinmica. El
siguiente cdigo muestra un cookie que guarda un texto que est concatenado a la
fecha/hora en ese momento:

En esta ocasin, el contenido del valor a guardar en el cookie est en la variable texto.
Tambin, se pueden guardar valores o datos que provengan de pginas anteriores y que
hayan sido introducidas a travs de un formulario:

Una vez que se ha creado un cookie, es necesario establecer una serie de atributos para
poder ser utilizado. El primero de esos atributos es el que se conoce como tiempo de vida.
Por defecto, cuando creamos un cookie, se mantiene mientras dura la ejecucin del
navegador. Si el usuario cierra el navegador, los cookies que no tengan establecido un
tiempo de vida sern destruidos. Por tanto, si se quiere que un cookie dure ms tiempo y
est disponible para otras situaciones, es necesario establecer un valor de tiempo (en
segundos) que ser la duracin o tiempo de vida del cookie. Para establecer este atributo,
se utiliza el mtodo setMaxAge(). El siguiente ejemplo establece un tiempo de 31 das de
vida para el cookie unCookie:

Si se utiliza un valor positivo, el cookie ser destruido despus de haber pasado ese tiempo;
si el valor es negativo, el cookie no ser almacenado y se borrar cuando el usuario cierre el
navegador. Por ltimo, si el valor que se establece como tiempo es cero, el cookie ser
borrado. Otro de los atributos que se incluye cuando se crea un cookie es el path desde el
que ser visto, es decir, si el valor del path es / (raz), quiere decir que en todo el site se
podr utilizar ese cookie, pero si el valor es /datos, quiere decir que el valor del cookie
slo ser visible dentro del directorio datos. Este atributo se establece mediante el
mtodo setPath().

Existe un mtodo dentro de la clase Cookie que permite establecer el dominio desde el cual
se ha generado el cookie. Este mtodo tiene su significado, porque un navegador slo enva
al servidor los cookies que coinciden con el dominio del servidor que los envi. Si en alguna
ocasin se requiere que estn disponibles desde otros subdominios, se especifica con el
mtodo setDomain(),
Loa anterior se aplica si existe el servidor web en la pgina www.paginasjsp.com, pero al
mismo tiempo tambin existen otros subdominios como usuario1.paginasjsp.com,
usuario2.paginasjsp.com, etc. Si no se establece la propiedad domain, se entiende que el
cookie ser visto slo desde el dominio que lo cre; sin embargo, si se especifica un nombre
de dominio, se entender que el cookie ser visto en aquellos dominios que contengan el
nombre especificado. En el siguiente ejemplo, se hace que el cookie definido en el objeto
unCookie est disponible para todos los dominios que contengan el nombre
.paginasjsp.com. Un nombre de dominio debe comenzar por un punto.

Igualmente, para conocer el dominio sobre el que acta el cookie, basta con utilizar el mtodo
getDomain() para obtener esa informacin. Una vez que se ha creado el objeto Cookie, y se ha
establecido todos los atributos necesarios es el momento de crear realmente, ya que hasta
ahora slo se tena un objetoque representa ese cookie. Para crear el archivo cookie real, se
utiliza el mtodo addCookie() de la interfaz HttpServletResponse:

Una vez ejecutada esta lnea es cuando el cookie existe en el disco del cliente que ha

accedido a la pgina JSP. Es importante sealar que si no se ejecuta esta ltima


lnea, el cookie no habr sido grabado en el disco y, por lo tanto, cualquier
aplicacin o pgina que espere encontrar dicho cookie no lo encontrar.

5.2. Recuperar un cookie


El proceso de recuperar un cookie determinado puede parecer algo complejo, ya que no hay una
forma de poder acceder a un cookie de forma directa. Por este motivo es necesario recoger
todos los cookies que existen hasta ese momento e ir buscando aqul que se quiera y que, al
menos, se conoce su nombre. Para recoger todos los cookies que tenga el usuario guardados, se
crea un array de tipo Cookie, y se utiliza el mtodo getCookies() de la interfaz HttpServletRequest
para recuperarlos:

5.3. Utilizar los cookies


Para realizar un ejemplo prctico, se va a seguir con el de Sesiones. El objetivo ser modificar
las pginas necesarias para que si el usuario selecciona un campo de tipo checkbox (que
ser necesario aadir), el nombre de usuario le aparezca por defecto cuando vuelva a entrar
a esa pgina. Este nombre de usuario estar guardado en un cookie en su ordenador. El
primer paso es aadir el checkbox en la pgina login.jsp:

El siguiente paso es modificar la pgina checklogin.jsp que recoge el usuario y clave


introducidos y, por lo tanto, ahora tambin la nueva opcin de Recordar mi usuario.
Dentro de la condicin que se cumple si el usuario y la clave son correctos, y despus de
crear la sesin, escribimos el cdigo que crear el cookie con el usuario. El primer paso es
comprobar que el usuario ha activado esta opcin, es decir, ha seleccionado el checkbox.
Tambin, se realiza la comprobacin de que el campo recordarUsuario no llegue con el
valor nulo y produzca un error en la aplicacin, en caso de que el usuario deje sin seleccionar
el checkbox:

Se seala errneamente que los cookies estn envueltos con la intromisin de la privacidad de
los usuarios por parte de determinados websites e incluso con la seguridad. Estos son pequeos
archivos de texto que poco dao pueden causar, y que como es lgico no pueden contener
ningn cdigo ejecutable.
Desde el punto de vista es cierto que determinados sites pueden saber qu clase de palabras se
consultan en un buscador o cul es nuestra frecuencia de visita a un determinado web. En
cualquier caso, son datos que no descubren la verdadera identidad del usuario, aunque si bien
por este motivo, muchos de ellos deciden desactivar la recepcin de cookies. Si esto es as, las
pginas en las que se utilicen cookies no funcionarn de forma correcta al no permitir ser
recibidas por los navegadores.

Вам также может понравиться