Este documento presenta un módulo sobre el entorno J2EE. Incluye información sobre arquitectura web, componentes, manejo de peticiones web, tecnologías de aplicaciones web, desarrollo y despliegue, el archivo web.xml y sus secciones, y referencias. El objetivo es introducir conceptos clave del entorno J2EE y componentes para el desarrollo de aplicaciones web.
3. 3 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
4. 4 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
6. 6 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
7. 7 Componentes y contenedor Los componentes web existen bien en forma Servlet o JSP (a través de JavaBeans y etiquetas) Los componentes web corren en un contenedor web Tomcat es uno de los contenedores más populares El contenedor web provee servicios de sistema a los componentes Dispathing, seguridad y gestión del ciclo de vida
8. 8 Componentes y contenedor La aplicación web es un paquete desplegable Componentes web (servlets y JSPs) Ficheros de recursos estáticos (imágenes, …) Librerías Descriptor de despliegue (fichero web.xml) La aplicación web puede ser representada como: Jerarquía de directorios y ficheros (sin comprimir) Fichero WAR reflejando la misma jerarquía (una vez que está desplegado se descomprime igualmente)
9. 9 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
11. 11 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
13. 13 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
14. 14 Desarrollo y despliegue Escribir (y compilar) el código del componente (servlet o JSP) y las clases necesarias por este código Crear los recursos estáticos (imágenes, páginas…) Crear el descriptor de despliegue (web.xml) Construir la aplicación (.war o directorio) Desplegar la aplicación en un contenedor Los clientes web pueden ahora acceder la aplicación vía URL
15. 15 Desarrollo y despliegue Escribir y compilar el código del componente Crear la estructura arbol de despliegue Escribir código servlet o páginas JSP Crear build.xml para Ant Todo esto se puede hacer a través del IDE (Eclipse o NetBeans…) Mantener el código de la aplicación y los ficheros compilados por separado Esto facilita el desarrollo iterativo Directorio raíz Build.xml Ant build file src directorio de fuentes web páginas JSP y HTML, imágenes
16. 16 Desarrollo y despliegue Crear los recursos estáticos (imágenes, páginas…) Páginas HTML Páginas personalizadas Páginas login Páginas de error Imágenes que son usadas en las páginas
17. 17 Desarrollo y despliegue Crear el descriptor de despliegue (web.xml) Este descriptor contiene las instrucciones de ejecución para el contenedor URL en la cual el cliente accede al componente web Cada aplicación debe tener uno
18. 18 Desarrollo y despliegue Construir la aplicación (.war o directorio) El WAR o el directorio desplegado: Proceso de build se compone de: Crear build directorio (si no existe) y los subdirectorios Compilar código en el directorio build/WEB-INF/classes Copiar web.xml dentro del directorio build/WEB-INF Copiar imágenes dentro del directorio build
19. 19 Desarrollo y despliegue Desplegar la aplicación en un contenedor Desplegar la aplicación en el contenedor, por ejemplo Tomcat Existen varias maneras de hacer el despliegue, dependiendo del IDE usado, por ejemplo.
20. 20 Desarrollo y despliegue Una aplicación puede ser desplegada de dos maneras diferentes: *.war Directorio descomprimido Usar *.war cuando tenemos que desplegar en una máquina remota Paquete listo para ser desplegado Parecido a un .jar Contiene: Componentes (servlets o JSPs) Clases Contenido estático
21. 21 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
22. 22 Raíz documento y contexto Documento raíz de la aplicación web Top-level directorio del WAR Contiene páginas JSP, clases client-side y archivos, y los recursos estáticos son almacenados Contiene directorio WEB-INF El contexto es el nombre que es mapeado al documento raíz de la aplicación web /hello1 es el contexto para el ejemplo hello1 Distingue la aplicación web dentro del contenedor (que puede tener varias aplicaciones web) Tiene que ser especificado como parte del URL cliente
23. 23 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
25. 25 Estructura .WAR 3 formas diferentes de desplegar: Usar IDE (Eclipse, NetBeans…) Usar herramienta ant después 3 different ways – Use IDE (NetBeans) – Use ant tool after putting proper build instruction in build.xml file ● “asant create-war” (under J2EE 1.4 tutorial) – Use “jar cvf <filename>.war .” command under build directory
26. 26 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
27. 27 Usando el web.xml La información de configuración está especificada en el web.xml (Web Applications Deployment Descriptor) Prolog Alias Paths Context and Initialization Parameters Event Listeners Filter Mappings Error Mappings Reference to Environment Entries, Resource environment entries, or Resources Case sensitive Order sensitive (in the following order) icon, display-name, description, distributable context-param, filter, filter-mapping listener, servet, servlet-mapping, session-config mime-mapping, welcome-file-list error-page, taglib, resource-env-ref, resource-ref security-constraint, login-config, security-role env-entry, ejb-ref, ejb-local-ref
28. 28 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
29. 29 Prólogo (del web.xml) Todo documento necesita de un prólogo: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/webapp_ 2_3.dtd">
30. 30 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
31. 31 Alias path (del web.xml) Cuando una petición es recibida en el contenedor del servlet, se debe determinar qué componente web y en qué aplicación web debe recoger la petición. Esto se lleva a cabo de la siguiente forma: Una URL que contiene la raíz del contexto y el alias path http://<host>:8080/context_root/alias_path
33. 33 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
34. 34 Contexto e inicialización Representa contexto de aplicación Puede ser compartido a lo largo de los componentes en un fichero WAR <web-app> ... <context-param> <param-name> javax.servlet.jsp.jstl.fmt.localizationContext </param-name> <param-value> messages.BookstoreMessages </param-value> </context-param> ... </web-app>
35. 35 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
36. 36 Event listeners Recibe los evento del ciclo de vida <listener> <listener-class> listeners.ContextListener </listener-class> </listener>
37. 37 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
38. 38 Filter mappings Especifica qué filtros son aplicados a qué petición, y en qué orden: <filter> <filter-name>OrderFilter<filter-name> <filter-class>filters.OrderFilter<filter-class> </filter> <filter-mapping> <filter-name>OrderFilter</filter-name> <url-pattern>/receipt</url-pattern> </filter-mapping>
39. 39 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
40. 40 Error mappings Los mappings pueden terminar con una excepción si alguna de las URL que contienen no se encuentra. En tal caso le indicamos qué hacer: <error-page> <exception-type>exception.OrderException</exception-type> <location>/errorpage.html</location> </error-page>
41. 41 Contenidos de este tema Introducción a J2EE Aplicaciones web Componentes y contenedor Web REQUEST handling Tecnologías de aplicación web Desarrollo y despliegue Raíz documento o contexto Estructura WAR Usando el web.xml Web.xml – Prólogo Web.xml – Alias path Contexto e inicialización Event listeners Filter mappings Error mappings References
42. 42 References Son necesarios cuando los componentes necesitan hacer referencia a otras entradas del entorno, otras clases o recursos como bases de datos Ejemplo: declarar una referencia a una fuente de datos: <resource-ref> <res-ref-name>jdbc/BookDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
43. Es importante que recordeis… “Si haces todos los días lo mismo no llegarás más lejos de lo que otras veces has llegado” Adelante!!! Jesús Muñoz jesus@iluego.com