sesiones en java y jsp

Download Sesiones en Java y JSP

If you can't read please download the document

Upload: antonio-leon

Post on 27-Nov-2015

31 views

Category:

Documents


4 download

DESCRIPTION

Documento en el que se describe de manera detallada como manejar sesiones con Servlets en Java y JSP.

TRANSCRIPT

  • 1

    INTRODUCCIN

    El seguimiento de sesin es un mecanismo que los servlets utilizan para mantener el estado

    sobre la serie de peticiones desde un mismo usuario (esto es, peticiones originadas desde el

    mismo navegador) durante un periodo de tiempo.

    Las sesiones son compartidas por los servlets a los que accede el cliente. Esto es conveniente

    para aplicaciones compuestas por varios servlets. Para utilizar el seguimiento de sesin

    debemos:

    Obtener una sesin (un objeto HttpSession) para un usuario.

    Almacenar u obtener datos desde el objeto HttpSession.

    Invalidar la sesin (opcional).

    NDICE

    Obtener una sesin . 2

    Almacenar y obtener datos desde la sesin 2

    Invalidar la sesin . 3

    Manejar todos los navegadores 4

    Conclusiones 6

    Bibliografa 6

  • 2

    DESARROLLO

    Obtener una Sesin

    El mtodo getSession del objeto HttpServletRequest devuelve una sesin de usuario. Cuando

    llamamos al mtodo con su argumento create como true, la implementacin crear una sesin

    si es necesario.

    Para mantener la sesin apropiadamente, debemos llamar a getSession antes de escribir

    cualquier respuesta. Si respondemos utilizando un PrintWriter, entonces debemos llamar a

    getSession antes de acceder al PrintWriter, no slo antes de enviar cualquier respuesta.

    Almacenar y Obtener Datos desde la Sesin

    El Interface HttpSession proporciona mtodos que almacenan y recuperan:

    Propiedades de Sesin estndar, como un identificador de sesin.

    Datos de la aplicacin, que son almacenados como parejas nombre-valor, donde el

    nombre es un string y los valores son objetos del lenguaje de programacin Java. Como

    varios servlets pueden acceder a la sesin de usuario, deberemos adoptar una

    convencin de nombrado para organizar los nombres con los datos de la aplicacin.

    Esto evitar que los servlets sobrescriban accidentalmente otros valores de la sesin.

    Una de esas convenciones es servletname.name donde servletname es el nombre

    completo del servlet, incluyendo sus paquetes. Por ejemplo, es.uah.comunica.estado

    es una cookie con el servletname es.uah.comunica y el name estado.

  • 3

    Como un objeto puede ser asociado con una sesin, el ejemplo anterior autentica al usuario,

    para ello comprueba si ha iniciado sesin anteriormente viendo si el objeto asociado a la sesin

    es nulo o no. En caso de serlo crear la sesin con un nuevo objeto Usuario cuyos datos los

    recuperar con la instruccin getParameter del objeto HttpServletResonse.

    Una sesin puede ser designada como nueva. Una sesin nueva hace que el mtodo isNew

    de la clase HttpSession devuelva true, indicando que, por ejemplo, el cliente, todava no sabe

    nada de la sesin. Una nueva sesin no tiene datos asociados.

    Invalidar la Sesin

    Una sesin de usuario puede ser invalidada manual o automticamente, dependiendo de

    dnde se est ejecutando el servlet. (Por ejemplo, el Java Web Server, invalida una sesin

    cuando no hay peticiones de pgina por un periodo de tiempo, unos 30 minutos por defecto).

    Invalidar una sesin significa eliminar el objeto HttpSession y todos sus valores del sistema.

    Para invalidar manualmente una sesin, se utiliza el mtodo invalidate de la clase

    HttpSession. Algunas aplicaciones tienen un punto natural en el que invalidar la sesin.

  • 4

    Manejar todos los Navegadores

    Por defecto, el seguimiento de sesin utiliza cookies para asociar un identificador de sesin

    con un usuario. Para soportar tambin a los usuarios que acceden al servlet con un navegador

    que no soporta cookies, o si este est programado para no aceptarlas, se debe utilizar

    reescritura de URL en su lugar.

    Cuando se utiliza la reescritura de URL se llama a los mtodos que, cuando es necesario,

    incluyen el ID de sesin en un enlace. Debemos llamar a esos mtodos por cada enlace en la

    respuesta del servlet.

    El mtodo que asocia un ID de sesin con una URL es HttpServletResponse.encodeUrl. Si se

    redirecciona al usuario a otra pgina, el mtodo para asociar el ID de sesin con la URL

    redireccionada se llama HttpServletResponse.encodeRedirectUrl.

    Los mtodos encodeUrl y encodeRedirectUrl deciden si las URL necesitan ser reescritas, y

    devolver la URL cambiada o sin cambiar. (Las reglas para las URLs y las URLs

    redireccionadas son diferentes, pero en general si el servidor detecta que el navegador soporta

    cookies, entonces la URL no se reescribir).

    Por ejemplo, el siguiente servlet devuelve un catlogo con dos enlaces para cada libro. Un

    enlace ofrece detalles sobre el libro y el otro ofrece al usuario aadir el libro a su hoja de

    pedidos. Ambas URLs son reescritas:

  • 5

    Si el usuario pulsa sobre un enlace con una URL re-escrita, el servlet reconoce y extrae el ID

    de sesin. Luego el mtodo getSession utiliza el ID de sesin para obtener el objeto

    HttpSession del usuario.

    Por otro lado, si el navegador del usuario no soporta cookies y el usuario pulsa sobre una URL

    no re-escrita, se pierde la sesin de usuario. El servlet contactado a travs de ese enlace crea

    una nueva sesin, pero la nueva sesin no tiene datos asociados con la sesin anterior. Una

    vez que un servlet pierde los datos de una sesin, los datos se pierden para todos los servlets

    que comparten la sesin. Debemos utilizar la re-escritura de URLs consistentemente para que

    nuestro servlet soporte clientes que no soportan o aceptan cookies.

  • 6

    Conclusin

    El seguimiento de sesiones en la actualidad es muy importante para una pgina web, ya que

    nos ayudara a llevar un mejor control de los usuarios y el contenido al que ellos pueden o no

    acceder dentro de las pginas web

    Bibliografa

    Eric Jendrock et al. The Java EE 6 Tutorial (2013).

    http://docs.oracle.com/javaee/6/tutorial/doc/

    Building Web Apps in Java: Beginning & Intermediate Servlet & JSP Tutorials.

    http://courses.coreservlets.com/Course-Materials/csajsp2.html

    Documentacin oficial:

    o Java EE Specifications

    http://www.oracle.com/technetwork/java/javaee/tech/index.html

    o API specification for version 6 of Java EE

    o http://docs.oracle.com/javaee/6/api/

    http://docs.oracle.com/javaee/6/tutorial/doc/http://courses.coreservlets.com/Course-Materials/csajsp2.htmlhttp://www.oracle.com/technetwork/java/javaee/tech/index.htmlhttp://docs.oracle.com/javaee/6/api/