j2ee. servlets

64
Samuel Marrero Lorenzo [email protected] 1 Java J2EE - Servlets Diseño de aplicaciones empresariales

Upload: mar-sanchez-alvarez

Post on 24-Nov-2015

46 views

Category:

Documents


1 download

TRANSCRIPT

  • Samuel Marrero Lorenzo [email protected] 1

    Java J2EE - Servlets

    Diseo de aplicaciones empresariales

  • 2Introduccin a J2EE Es un estndar para la construccin estndar para la

    construccin de aplicaciones empresariales Es una especificacin basada en estndares abiertos que

    facilitan el diseo, construccin , ensamblado y puesta en produccin de aplicaciones empresariales

    Est basada en componentes Ofrece un modelo para el desarrollo de aplicaciones

    distribudas multitiered, la habilidad de reusar componentes, intercambio de datos basado en XML, un manejo de transacciones flexible y un modelo de seguridad unificado.

    Est constituido por un conjunto de tecnologas estndares: Servlets, JSP, JavaBeans, EJB, JDBC, JNDI, etc.

    Las soluciones J2EE no estn atadas a productos ni a interfaces de programacin de ningn fabricante

  • 3Tecnologas Web Aplicacin web

    Aplicacin que corre en al menos un servidor y a la que el usuario accede desde un cliente de propsito general (ej.: navegador web en un PC, etc.)

    La comunicacin en la Web gira en torno al protocolo HTTP Protocolo de nivel de aplicacin Funciona sobre TCP Usa el puerto 80 por defecto Modelo peticin/respuesta Al igual que SMTP, es un protocolo ASCII, que usa MIME

    para transferir informacin no ASCII

  • 4Crear una aplicacin web

    Para ello vamos a utilizar lo siguiente: Un servidor web: Apache Tomcat Un IDE de desarrollo Java: Eclipse Un plug-in de Eclipse para manejar Tomcat: c:\java\Herramientas\tomcatpluginV3.zip

    Se pueden utilizar otros IDEs como el NetBeans y otros servidores web

  • 5Apache Tomcat

    Es un servidor de aplicaciones web que nos permite realizar la parte servidor de nuestras aplicaciones web. Soporta: Servlets, JSP, acceso con JDBC y manejo de transacciones entre otras cosas.

    No soporta: En la actualidad Tomcat slo dispone de un contenedor web por lo tanto no soporta Enterprise Java Beans (EJB)

    http://jakarta.apache.org/tomcat

  • 6Instalacin y configuracin de Tomcat Instalacin: Establecer la ruta de la

    plataforma Java Establecer la variable TOMCAT_HOME =

    Configuracin puerto de escucha:

    %TOMCAT_HOME%\conf\server.xml Arranque y parada de Tomcat:

    Para iniciar Tomcat: %TOMCAT_HOME%\bin\startup.bat

    Para parar Tomcat: %TOMCAT_HOME%\bin\startup.bat

  • 7Probar Tomcat

    Acceder a un navegador web y escribir la siguiente URL: http://maquina:puerto Siendo la mquina aquella donde estsirviendo Tomcat y el puerto TCP por el que escucha.

    El resultado ser la pgina de bienvenida de Tomcat

  • 8Despliegue de aplicaciones web en Tomcat Para que Apache Tomcat pueda servir los

    componentes de una aplicacin web (pginas HTML, JSP, servlets, etc.) hay que desplegar la aplicacin web. Una vez desplegada la aplicacin web podremos acceder a

    ella desde un cliente web o navegador. Para ello accedemos al /manager de Tomcat,

    localizado en la pgina principal. Y escribimos el directorio o fichero WAR donde se halla la

    aplicacin web que queremos desplegar. Pulsamos en Desplegar Hacemos click en el enlace a nuestra aplicacin para poder

    acceder a ella y as probar su funcionamiento

  • 9Configuracin de Tomcat[root@servidor1 bin]# ./catalina.sh run Using TOMCAT_HOME: /usr/local/tomcat

    Directorio base de Tomcat

    Using CATALINA_HOME: /usr/local/tomcat Directorio donde van a estar las aplicaciones web

    Using CATALINA_TMPDIR: /usr/local/tomcat/temp Directorio de ficheros temporales de Tomcat

    Using JAVA_HOME: /usr/local/jdk Ruta del kit de desarrollo Java

  • 10

    Configuracin de Tomcatserver.xml

    server.xml es el archivo principal de configuracin para Tomcat, al igual que otros archivos de configuracin para productos empleados en servidor puede contener una gran variedad de parmetros, sin embargo, esta guia se concentrar en los parmetros principales.

  • 11

    server.xmlTags El archivo server.xml es un archivo en XML , el cual

    de no contener una estructura conforme a XML, se indicar al arranque de Tomcat; dicho archivo se encuentra bajo el directorio TOMCAT_HOME/conf

    Como cualquier otro documento en XML todo contenido entre es considerado un comentario, y por lo tanto cualquier parmetro que se encuentre entre estos caracteres no es utilizado por "Tomcat"; aquellos parmetros que no sean definidos dentro de server.xml son asignados un valor por defecto por Tomcat.

  • 12

    es el elemento principal del archivo server.xml y todas las dems secciones deben encontrarse entre estas etiquetas; el atributo port indica el puerto TCP donde se espera la seal de cierre (shutdown) de Tomcat, el cual rara vez es modificado.

  • 13

    Anidado dentro de los elementos es posible definir recursos JNDI para ser utilizados globalmente en Tomcat. A travs de es como define el tipo de recurso JNDI que serutilizado y mediante se especifican los parmetros especficos que tomar el recurso en dicha instancia de Tomcat.

  • 14

    Esta etiqueta permite configurar Tomcat para diferentes modalidades de ejecucin, en el archivo server.xml"Default" se definen dos modalidades a travs del atributo name; la definicin asignada name="Catalina" es empleada para ejecutar Tomcat individualmente

  • 15

    El elemento Connector representa las conexiones (Puertos TCP) que sern abiertas por Tomcat al arranque, a su vez dentro de cada elemento Connectorse definen diversos atributos los cuales dan ms detalles acerca de la conexin. port="8080" pruebas port="80" produccin

  • 16

    Los elementos , los cuales deben encontrarse anidados dentro de , representan el mecanismo que atender toda solicitud a Tomcat, esto es, toda solicitud recibida por las definiciones Connectors serprocesada por , los atributos de este elemento son los siguientes: logger: Los elementos Logger le indican a Tomcathacia donde deben ser enviados los registros "Logs" :

  • 17

    Los elementos Host permiten definir varios Hosts "Virtuales"

    para Tomcat, esto es, a travs del elemento se define un sitio (localhost) para atender solicitudes, a travs de Host es posible definir diversos sitios "Virtuales", su configuracin es la siguiente: Context es un elemento utilizado para indicar la ubicacin de las

    aplicaciones ejecutadas en Tomcat , en su configuracin "Default" estas aplicaciones se encuentran dentro del directorio webappsbajo el directorio raz de Tomcat.

    Una aplicacin en Tomcat o cualquier Servlet Engine(Web-Container) es un conjunto de "JSP's (Java Server Pages)" y/o "Servlets" agrupados con ciertos parmetros de arranque y seguridad, este conjunto de archivos / aplicacin en todo ServletEngine es conocido como un WAR (Web-Archive).

  • 18

    Ejemplo de aplicacin web.HTTP1-HolaMundo Esta aplicacin muestra el mensaje Hola Mundo desde una pgina HTML servida desde Tomcat

    Est creada en Eclipse usando el plugin de Tomcat

    Para este ejemplo simplemente desplegaremos la aplicacin desde el /manager de la consola de Tomcat

    Ponemos: HTTP1-HolaMundo y pulsamos en el botn Desplegar

  • 19

    HTTP Tipos de peticiones

    GET, POST, PUT, DELETE, TRACE, OPTIONS, HEAD Las dos tipos de peticiones ms relevantes en aplicaciones

    web son GET y POST

    Ejemplo de GET Utilizamos un navegador para acceder a http://localhost:8080/HTTP1-HolaMundo/index.html El navegador abre una conexin TCP al puerto indicado de la

    mquina localhost (resuelve el nombre por DNS si no lo encuentra en su red) y enva una peticin similar a:

    GET /HTTP1-HolaMundo/ndex.html HTTP/1.0>

  • 20

    HTTP. Peticiones GET Ejemplo de GET

    El navegador responde conHTTP/1.0 200 OK>Content-Type=text/html; ISO-8859-1>

    >

    Parmetros en peticiones GETURL?par1=val1&par2=val2 ... &parN=valN

    Ejemplo en una pgina HTML...

    ...

  • 21

    HTTP. Peticiones GET (2) Parmetros en peticiones GET

    Al hacer clic en el enlace anterior, se le enviara una peticinGET / =/HTTP1-HolaMundo/respuesta.html?nombre=Tomas+Morales&ciudad=Telde

    al servidor del que nos hemos bajado la pgina Caracteres en el valor de un parmetro:

    Caracteres ASCII alfanumricos y signos . (punto), - (guin), * (asterisco) y _ (subrayado) se quedan as

    Espacio en blanco => sustituir por + Resto de caracteres => %xy

    Las anteriores sustituciones las tiene que hacer la persona que escribe/genera el fichero

    Si un par par=val aparece ms de una vez, el parmetro correspondiente es multivaluado (su valor es un vector de valores)

  • 22

    Instalacin del plug-in de Eclipse para Apache Tomcat

    Este plug-in de Eclipse nos facilita el desarrollo de aplicaciones web con Tomcat desde Eclipse

    Para ello descargamos en plug-in contendido en el siguiente fichero en el directorio plugins de ECLIPSE_HOME C:\java\herramientas\tomcatPluginV3.zip, para la versin 3 de Eclipse

  • 23

    Iniciar Tomcat desde Eclipse

    Iniciamos Eclipse y hacemos doble clic en la barra de herramientas. Customize Perspective Commands Tomcat Reiniciamos Eclipse

    Aparecer en el men de Eclipse un submenTomcat, desde el que podemos iniciar, reiniciar y parar el servidor Tomcat

  • 24

    HTTP. Peticiones POST Peticiones POST

    Suelen usarse para enviar los datos de un formulario HTML por ejemplo Los datos se envan como parmetros, pero stos no forman parte de la

    URL , sino que se envan como parte del cuerpo del mensaje y por tanto no son visibles en el cliente (navegador)

    Ejemplo en un formulario HTML...

    Nombre: Ciudad:

    ...

  • 25

    HTTP. Peticiones POST (2)

    Peticiones POST Cuando el usuario pulsa el botn de submit, se enva una peticin POST al servidor del que nos hemos bajado el formulario

    POST /HTTP2-Formulario HTTP/1.0

    nombre=pepe&ciudad=Las+Palmas+de+GC

  • 26

    Ejemplo 2: Ejemplo de Formulario POST

    Abre el Eclipse Importa el proyecto Eclipse: HTTP2-Formulario Aqu tienes el cdigo del formulario: C:\java\HTTP2-Formulario\FormHTML.html

    Inicia Tomcat desde Eclipse Abre un navegador e introduce:

    http://localhost:8080/HTTP2-Formulario/FormHTML.html

  • 27

    Actividad. Crear una aplicacin web desde Eclipse Fichero Nuevo Proyecto Tomcat Nombre del proyecto: HTTP3-Prueba Examinar el contenido del proyecto creado por

    Eclipse: WEB-INF: classes, lib, src

    Crear una pequea pgina web prueba.htmlsitundola en el directorio base del proyecto

    Propiedades del proyecto Recargar el contexto de la aplicacin web creada

    Iniciar Tomcat Acceder a la pgina desde el navegador

    http://localhost:8080/HTTP3-Prueba/prueba.html

  • 28

    Tecnologas web Para la creacin de aplicaciones web se pueden

    seguir varias estrategias o herramientas: Antes. CGI (Common Gateway Interface): Un programa en

    lenguaje de propsito general o especfico como C que realiza las funciones de la parte servidora de la aplicacin

    Sencillos stos crean un proceso por cada peticin de cliente, por tanto, ineficientes bajo cargas elevadas

    Lgica de presentacin y de aplicacin mezcladas en los scriptsCGI

    Actualidad: Se han implementado otras estrategias/herramientas

  • 29

    Tecnologas web. Actualidad

    En la actualidad se utilizan herramientas ms eficientes Java - J2EE: Servlets, Java Server Pages(JSP), JavaBeans, JSTL, etc,

    Microsoft - .NET: ASP.NET LAMP:

    Linux + Apache + Mysql + PHP, Perl, Python

  • 30

    Servlets Cuando un usuario solicita una pgina HTML, se le enva una

    copia de esa misma pgina al cliente. esttico Hay ocasiones en las que el usuario solicita datos en tiempo

    real, como conocer datos de contacto de los clientes de una empresa. dinmico

    Un servlet permite construir pginas HTML dinmicas. Antes CGI, ahora servlets

    Desventajas CGI: Crean un nuevo proceso por cada peticin colapsando el servidor en cargas altas

    Ventajas Servlets: Los servlets, en cambio, no requieren una nueva ejecucin para cada usuario reutilizando el cdigo y los componentes (multisubprocesos) que el servidor ya tiene cargados en memoria de otras solicitudes.

  • 31

    Utilidad de los servlets

    Se usan cuando: La pgina web est basada en datos enviados

    por el usuario. Cuando los datos de una pgina web cambian

    frecuentemente (informes, noticias...), se actualizan las pginas dinmicamente.

    Las pginas web que usan informacin desde bases de datos y otras fuentes.

    Permiten soportar sistemas como conferencias on-line sincronizando mltiples peticiones concurrentes de usuarios diferentes.

  • 32

    El API javax.servlet y javax.servlet.http

    El paquete javax.servlet proporciona las clases y los interfaces necesarios para escribir servlets.

    El interface Servlet declara los mtodos, pero no implementa, que manejan el servlet y su comunicacin con los clientes.

    Una clase servlet debe: Implementar el interface Servlet o ms comnmente, extender una clase que lo implemente como

    HttpServlet. (servlet http) Cuando un servlet acepta la llamada de un cliente, recibe dos

    objetos: Un ServletRequest: encapsula la comunicacin desde el cliente al

    servidor Un ServletResponse: encapsula la comunicacin de vuelta desde el

    servidor al cliente

  • 33

    Servlets HTTP El paquete javax.servlet.http define la clase HttpServlet que

    implementa a su vez la clase general Servlet. HttpServlet es un servlet abstracto que maneja una aplicacin

    bsica relacionada con el manejo de una peticin http. Incluye los mtodos doGet(), doPost() (equivalentes a las

    operaciones de http estndar GET/POST), doPut(), doDelete(), doHead(), doTrace() y doOptions(). Todos estos mtodos reciben dos objetos:

    Un HttpServletRequest: encapsula la comunicacin, usando el protocolo http, desde el cliente al servidor. Subclase del objeto ServletRequest.

    Un HttpServletResponse: encapsula la comunicacin, usando el protocolo http, de vuelta desde el servidor al cliente. Subclase del objeto ServletResponse.

  • 34

    Servlets HTTP (2) La operacin GET representa la peticin o lectura de

    un objeto a una URL especfica. El mtodo doGet() maneja GET.

    La operacin POST representa la modificacin o consulta de los datos del servidor. El mtodo doPost() maneja POST. La operacin POST

    permite acceder y modificar objetos del lado del servidor, como bases de datos.

    Los mtodos doPut() y doDelete() permiten cargar y borrar archivos.

  • 35

    Servlets. Ejemplo HolaMundoPaso 1

    Este servlet escribe en el cliente el mensaje Hola Mundo

    Para crear un servlet http tenemos que extender la clase HttpServlet de la siguiente manera:

    import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HolaMundo extends HttpServlet{

  • 36

    Servlets. Ejemplo HolaMundoPaso 2

    Proporcionar un mtodo doGet para enviar la respuesta al cliente

    public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    }

  • 37

    Servlets. Ejemplo HolaMundoPaso 3 Dentro del mtodo creamos un objeto de tipo PrintWiter donde escribiremos la pgina htmlenviada al cliente

    PrintWriter ficheroHTML;res.setContentType("text/html");ficheroHTML=res.getWriter();

    El tipo de datos enviados al cliente es texto/html que ser interpretado en el cliente (navegador)

  • 38

    Servlets. Ejemplo HolaMundoPaso 4

    Escribimos la pgina al cliente con el mtodo println

    ficheroHTML.println("");ficheroHTML.println("ServletHolaMundo");ficheroHTML.println("");ficheroHTML.println("Curso Java 2 ");ficheroHTML.println("Hola Mundo");ficheroHTML.println("");

  • 39

    Servlets. Ejemplo HolaMundoPaso 5

    Por ltimo cerramos la conexin con el objeto PrintWriter

    ficheroHTLM.close();

  • 40

    Ciclo de vida de un servlet Un servlet siempre tiene el mismo ciclo de vida:

    el servlet se inicializa: un servlet solo se inicia una vez durante su ciclo de vida hasta que es destruido e iniciado de nuevo. Este mtodo solo se ejecuta una vez y nos permite por ejemplo abrir conexiones con bases de datos una sola vez, al principio, y servir peticiones de datos a clientes sin necesidad de abrir una conexin con la base de datos cada vez. Mtodo init().

    el servlet maneja peticiones: interactuar con clientes. Mtodos doGet(), doPost(), service(), etc.

    el servidor destruye el sevlet: el servidor destruye al servletllamando al mtodo destroy() del propio servlet. Pueden haber problemas con aquellos hilos todava en ejecucin, habr que sincronizar su terminacin. Mtodo destroy().

  • 41

    Ejemplo HolaMundo.java

    Importar en Eclipse el proyecto Servlet1-HolaMundo

    Ver el cdigo y el ciclo de vida Cdigo de HolaMundo.java:

    C:\java\Servlet1-HolaMundo\HolaMundo\WEB-INF\src\HolaMundo.java

  • 42

    Servlets interactuando con los clientes Muchas veces en Internet vemos conexiones a

    pginas mediante el siguiente formato GET: URL?param1=valor1&param2=valor2. Esta es la forma que usa el http para enviar parmetros a las pginas.

    Los mtodos proporcionados por los servlets hacen que el programador se despreocupe de tener que decodificarlos.

    Estos son los mtodos de la clase HttpServletRequest: getParameterNames() getParameter() getParameterValues()

  • 43

    Servlets interactuando con los clientes (2)

    Para acceder a los datos del cliente en HttpServletRequest se usan: Mtodo getParameterNames(): devuelve los nombres de los parmetros en una Enumeration.

    Mtodo getParameter(nombreParametro) devuelve el valor del parmetro.

    Mtodo getParameterValues(nombreParametro): devuelve en un array de tipo String todos los valores de ese parmetro, cuando ste tenga varios valores.

  • 44

    Servlets interactuando con los clientes (3)

    Para acceder a los datos del cliente en HttpServletRequest: Mtodo getWriter(): devuelve un objeto PrintWriter para devolver datos en formato texto al cliente

  • 45

    Servlets. Ejemplo Servlet2-FormHTML

    El siguiente proyecto Eclipse solicita los datos nombre y ciudad al cliente, mediante la pgina index.html

    La respuesta es enviada a un servletllamado FormHTML.java que enva los valores de vuelta al cliente en una tabla.

    Cdigo: C:\java\Servlet2-FormHTML\FormHTML\WEB-INF\src\FormHTML.java

    Para probar la aplicacin importa el proyecto en Eclipse

  • 46

    Servlets. Segundo ejemplo de obtencin de parmetrosimport java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class PrimerServlet extends HttpServlet{

    public void service (HttpServletRequest req, HttpServletResponse res) throws IOException{

    Enumeration parametros;String parametro;String valor;res.setContentType("text/html");PrintWriter out=res.getWriter();out.println("Ejemplo de servlet");out.println("");out.println("Guia para programadores de Java 2");out.println("");parametros=req.getParameterNames();while(parametros.hasMoreElements()){

    parametro=(String) parametros.nextElement();valor=req.getParameter(parametro);out.println("nombre: "+parametro+"");out.println("valor: "+valor+"");

    }out.println("");out.println("Regresar");out.println("");out.close();

    }public String getServletInfo(){

    return "Primer Servlet";}

    }

  • 47

    SingleThreadModel Normalmente un servlet sirve a varios clientes

    concurrentemente. Para hacer que el servlet maneje slo a un cliente a

    la vez ste debe implementar el interfaceSingleThreadModel

    Esta puede ser una solucin para aquellos servletsque permiten la comparticin de recursos como bases de datos, y no se quiere complicar el cdigo proporcionando mecanismos de sincronizacin. La contrapartida es que las peticiones de usuario se harn

    una a una con el consiguiente retardo en la respuesta.

  • 48

    Empaquetado de una aplicacin web (WAR) Una aplicacin web se empaqueta en un fichero .war

    Unix/Linux: jar cvf aplicacionWeb.war directorio

    El nombre de una aplicacin web no tiene porque coincidir con el de su fichero .war. El nombre se decide al instalar el fichero .war

    Estructura de un fichero .war Directorio WEB-INF/classes

    Ficheros .class que conforman la aplicacin web, agrupados en directorios segn su estructura en paquetes

    Directorio WEB-INF/lib Ficheros .jar de libreras que usa la aplicacin

    Se empaqueta, por defecto, sin ficheros fuentes

  • 49

    Empaquetado de una aplicacin web (2) Estructura de un fichero .war

    WEB-INF/web.xml Configuracin estndar de la aplicacin web Si la aplicacin necesita otros ficheros de configuracin (ej.: ficheros de

    configuracin de Struts, ficheros de configuracin propios, scripts de creacin de tablas, etc.), se recomienda incluirlos debajo de WEB-INF

    Lo que hay debajo de WEB-INF slo es visible a los servlets y pginas JSP de la aplicacin

    Directorio raz y subdirectorios Vista de la aplicacin (ej.: ficheros HTML, pginas JSP, imgenes, etc.) Visible a los navegadores

    Un fichero .war se puede instalar/desplegar (deployment) en cualquier servidor de aplicaciones web conforme a J2EE

  • 50

    Empaquetar una aplicacin web en Eclipse

    En Eclipse crear o importar el proyecto Crear entrada nombre.war en el directorio donde deseemos almacenarlo

    En Eclipse: Seleccionar el proyecto Propiedades Tomcat Exportar a WAR Acceder al nombre.war creado anteriormente En el men del proyecto Proyecto Tomcat Exportar a WAR

  • 51

    WEB-INF/web.xml

    FormHTMLFormHTML

    ... Resto de servlets de la aplicacion...

  • 52

    WEB-INF/web.xml (2)

    FormHTML/FormHTML

    ... Mappings para el resto de servlets del tutorial ...

    index.html

  • 53

    Tipos de URLs en HTML (1) Las URLs que muestra el navegador empiezan por

    http://localhost:8080/Servlet2-FormHTML Son URLs absolutas localhost:8080: mquina y puerto en el que corre el

    servidor de aplicaciones (en este caso Tomcat) /Servlet2-FormHTML: nombre de la aplicacin web

    Las URLs que se usan en los ficheros HTML o en las respuestas generadas del ejemplo son de tipo pathrelativo, y en consecuencia no incluyen http://localhost:8080 Buena idea, permite instalar la aplicacin en otro servidor

  • 54

    Seguimiento de sesin (1)

    La API servlet ofrece un mecanismo para manejar una sesin de un cliente.

    El servlet puede mantener informacin sobre mltiples pginas y a travs de muchas transacciones segn navegue el usuario.

    En muchas aplicaciones es importante ofrecer continuidad por medio de una serie de pginas web como seguir compras en un carro de la compra.

  • 55

    Seguimiento de sesin (2) Cada navegador dispone de su propio objeto

    javax.servlet.http.HttpSession en el servidor Es posible enganchar objetos a una sesin y

    recuperarlos con los mtodos: void setAttribute(String, Object) Object getAttribute(String)

    Por motivos de escalabilidad y de que en HTTP no hay nada especial que indique que un navegador ha dejado de usar la aplicacin web, cada sesin dispone de un timeout (en minutos) Si transcurre el timeout sin que el navegador acceda a la

    aplicacin, el servidor destruye la sesin Configurable en web.xml

  • 56

    Seguimiento de sesin (3) En el ejemplo

    Cada vez que un usuario hace un login, crearemos una sesin, le engancharemos su nombre de login, y lo redirigiremos a la pgina principal del portal

    Cada vez que el usuario accede a la pgina principal del portal, si ya ha hecho el login, se le saludar por su nombre (se recupera de la sesin)

    Cada vez que el usuario accede a la pgina principal del portal, si todava no ha hecho el login, o su sesin ha caducado, se le redirigir a la pgina de login

    Cuando un usuario hace un logout, le destruiremos la sesin y lo redirigiremos a la pgina principal del tutorial

  • 57

    Seguimiento de sesiones (4)

    Cmo sabe el servidor de aplicaciones a qusesin est asociada cada peticin HTTP que recibe ? Mediante los siguientes mecanismos:

    Por medio de cookies: que son pequeos ficheros de texto que guardan informacin sobre nuestra sesin

    Por medio reescritura de la URL: se escribe datos de la sesin despus de la URL

    Por medio de campos ocultos en formularios que guardan los datos asociados a nuestra sesin

  • 58

    Ejemplo de seguimiento de sesin

    Esta aplicacin de ejemplo permite hacer el login de un usuario

    Consta de una serie de servlets: ServletMuestraLogin: Es la pgina de entrada a la aplicacin donde el usuario inserta su login

    ServletProcesaLogin: Si el login ha sido insertado se accede a la ServletPaginaPrincipal

    Si no est validado la aplicacin le redirige a la pgina de entrada (ServletMuestraLogin), mostrando los errores

  • 59

    Ejemplo de seguimiento de sesin (2)

    ServletPaginaPrincipal: muestra la pgina principal del usuario, si este ha iniciado una sesin, si no se redirige a ServletMuestraLogin

    ServletProcesaLogout: procesa el logout del usuario

    LoginManager: es una clase de mtodos estticos

    login(): crea la sesin del usuario logout(): invalida la sesin del usuario getLoginName(): devuelve el nombre login del usuario

  • 60

    Ejemplo de seguimiento de sesin (3)

    Para desempaquetar la aplicacin y probarla, vamos a seguir los siguientes pasos: En Tomcat accedemos al /manager Desplegamos el archivo Servlet6-SesionLogin del directorio c:\java

  • 61

    Ejemplo de seguimiento de sesin (4). Cdigo. ServletMuestraLogin: c:\java\Servlet6-

    SesionLogin\WEB-INF\src\ServletMuestraLogin.java ServletProcesaLogin: c:\java\Servlet6-

    SesionLogin\WEB-INF\src\ServletProcesaLogin.java ServletPaginaPrincipal: c:\java\Servlet6-

    SesionLogin\WEB-INF\src\ServletPaginaPrincipal.java ServletProcesaLogout: c:\java\Servlet6-

    SesionLogin\WEB-INF\src\ServletProcesaLogout.java LoginManager: c:\java\Servlet6-SesionLogin\WEB-

    INF\src\LoginManager.java

  • 62

    Manejo de la sesin Para manejar la sesin

    introducir los datos de la sesin en el objeto request:HttpSession session = request.getSession(true);session.setAttribute(login, login);

    obtener los datos de la sesin del objeto request:HttpSession session = request.getSession(false);if (session == null) {

    return null;} else{

    return (String) session.getAttribute(login);

    }

  • 63

    Redirigir la salida desde un servlet El ejemplo, aparte de ilustrar el uso de sesiones,

    hace nfasis en el uso de sendRedirect y forward sendRedirect

    Le decimos al navegador que nos haga una nueva peticin a otra URL

    forward Nos movemos a otra URL dentro del servidor Se conserva todo lo que haba en la request til para tratar errores en formularios Los servlets de procesamiento insertan el atributo errores

    (un Map) en la request Los servlets que muestran formularios comprueban si la

    request incluye el atributo errores

  • 64

    Redirigir la salida desde un servlet

    Cundo usar forward y cundo sendRedirect ? En principio, un forward siempre es ms rpido (ocurre en el servidor)

    Un forward es preciso cuando queremos enganchar atributos a la request

    Ej.: Tratamiento de errores en formularios

    Para el resto de situaciones, es mejor usar un sendRedirect, dado que forward no cambia la URL que muestra la caja de dilogo del navegador