390 likes | 709 Views
Aplicaciones web. Aplicaciones web. HTTP. …. Aplicaciones con páginas estáticas. Subdirectorio especial: WEB-INF Fichero de configuración (opcional): WEB-INFweb.xml Ficheros *.html fuera de WEB-INF El contenido de WEB-INF no es directamente accesible a través de http
E N D
Aplicaciones web HTTP …
Aplicaciones con páginas estáticas • Subdirectorio especial: \WEB-INF • Fichero de configuración (opcional): \WEB-INF\web.xml • Ficheros *.html fuera de WEB-INF • El contenido de WEB-INF no es directamente accesible a través de http • El contenido fuera de WEB-INF es directamente accesible a través de http
Aplicación con páginas estáticas: Ejemplo Hello web WEB-INF SubDir Hello.html web.xml Bye.html URLS: http://.../Hello/Hello.html http://.../Hello/SubDir/Bye.html
Aplicación con páginas estáticas: Ejemplo, II • Fichero de configuración web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app version=“3.0“ xmlns="http://java.sun.com/xml/ns/javaee“ xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance“ xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> </web-app>
Servidor de aplicaciones • Administración: …\glassfish\bin\asadmin • Arranque: asadmin> start-domain domain1 • También automáticamente desde NetBeans • Parada: asadmin> stop-domain domain1 • URL: http://localhost:8080 • Entorno web de administración: http://localhost:4848 Usuario: admin, Clave: adminadmin
Acceso a las aplicaciones web • URLs de acceso a aplicaciones: • Cada aplicación tiene asociada una URL de acceso, formada por la URL del servidor se-guida de un identificador de la aplicación Ejemplo: http://localhost:8080/test • Cada aplicación tiene asociada una o más páginas (o componentes) de inicio del directorio raíz, que se indican en web.xml: <welcome-file-list> <welcome-file>start.html</welcome-file> </welcome-file-list>
Aplicación con páginas estáticas: Despliegue • Se despliega desde el entorno de admi-nistración del servidor de aplicaciones • Web applications Deploy (seleccionar directorio, indicar nombre de la aplicación y ruta de acceso) • La URL de acceso a una página es la del servidor seguida de la ruta de acceso de la aplicación y la de acceso a la página • Ej: http://localhost:8080/test/path/pag.html
Despliegue desde NetBeans • Pulsar con el botón derecho del ratón sobre el proyecto • Ejecutar “Deploy” o “Run” • Automáticamente se compila el proyecto y se arranca el servidor si hace falta, se despliega el módulo, se arranca el navegador si hace falta y se hace la petición http correspondiente
Módulos web de presentación: Estructura • Recursos web • Ficheros de contenidos estáticos (HTML, imágenes, …) • Componentes (programas generación dinámica de contenidos) • Clases de utilidades (BBDD, …) • Programas cliente (applets, JavaScript, …) • Ficheros de configuración (XML) Directorios / /WEB-INF /WEB-INF / /WEB-INF
Estructura de módulos web PÚBLICO PRIVADO
Módulos web de presentación: Formato alternativo • Un módulo web puede estar formado por un fichero XXX.war que contiene un árbol de directorios, comprimido en formato Zip. • Se despliega análogamente al caso de un árbol de directorios.
Aplicaciones web: Estructura • Ficheros XXX.ear que contienen varios módulos web en formato war • Los módulos web pueden ser de presen-tación o de servicios (programas que re-ciben peticiones de información o de eje-cución de acciones de otro módulo web) • NetBeans gestiona la estructuración y despliegue de módulos y aplicaciones de manera transparente
Configuración de módulos web • Asociación de componentes a URLs • Cada componente tiene asociado un alias y se pueden asociar alias a URLs. Ejemplo: el alias TStart puede corresponder al servlet servlets.TestStart.class o a la página TestStart.jsp y a la URL /TS le puede corresponder el alias TStart. • Las URLs comienzan obligatoriamente con / y pueden ser patrones con * (como /TS/*).
Configuración de módulos web, II • Cada aplicación tiene asociada una componente de inicio. • La componente de inicio se especifica mediante un camino de acceso (URL relativa) que comienza sin barra.
Configuración de módulos web: Ejemplo • La aplicación se llama Prueba. • La URL del servidor es 150.244.0.0:8080. • El alias Comienzo corresponde al servlet con clase servlets.Start. • El patrón de URL “/init/*” corresponde al servlet con alias Comienzo. • La componente de inicio es “init/start.html”. • Al acceder a http://150.244.0.0:8080/Prueba/, el servidor muestra el contenido generado por el servlet con clase servlets.Start.
URLs • Son las direcciones utilizadas para acceder a un recurso web http://servidor/aplicacion/contexto?param=valor • Incluyen el protocolo, identificador del servidor (IP o nombre), puerto (opcional), nombre de la aplicación, contexto y parámetros • Los parámetros se utilizan para enviar información del cliente al servidor
Tipos de peticiones Http • Peticiones directas desde la barra del navegador. • Peticiones indirectas a través de un enlace o botón en un formulario en la ventana del navegador. • GET: Inclusión de parámetros en la cabecera. • POST: Inclusión de parámetros en el cuerpo. También se utiliza para enviar información del cliente al servidor (ficheros, etc)
Tipos de peticiones http, II • La URL asociada a una petición POST no contiene sus parámetros • Recomendación de W3C: Utilizar peticiones Post si se va a producir un cambio en el estado de la aplicación. • Motivación práctica: Si el resultado de la petición depende del contexto, no tiene sentido facilitar el guardar su URL como página preferida.
Peticiones a través de un formulario: Codificación HTML <FORM action=“http://localhost:8080/TTTWeb” method=“post”> … </FORM> • Aspectos relevantes: Qué petición (URL) se hace al pulsar en el botón del formula-rio y cómo se especifica el formulario
Peticiones a través de un formulario: Ejemplo http://localhost:8080/TTTWeb/?voto=SI
Peticiones a través de un formulario: Codificación HTML, II <FORM> <LABEL for=“si”>SI</LABEL> <INPUT type=“radio”id=“si” name=“voto”value=“SI”/> <BR> <LABEL for=“no”>NO</LABEL> <INPUT type=“radio” id=“no” name=“voto” VALUE=“NO”/> <BR> <INPUT type=“submit” value=“Votar”/> <INPUT type=“reset” value=“Reiniciar”/> </FORM>
Peticiones a través de un formulario: Tipos de inputs • TEXT Campo de texto (una línea) value: El texto tecleado • PASSWORD Campo: clave value: El texto tecleado • CHECKBOX Item seleccionable • RADIO Selección de un item en lista • SUBMIT Botón de envío • RESET Botón de reinicio de formulario • FILE Selección de fichero
Peticiones a través de un formulario: Menús y textos • SELECT (Menú) <SELECT size="4" name="component-select"> <OPTION value=“1_a">Component_1</OPTION> <OPTION value=“1_b">Component_2</OPTION> </SELECT> • TEXTAREA <TEXTAREA name="thetext" rows="20" cols="80"> First line of initial text. Second line of initial text. </TEXTAREA> Value: el texto tecleado
Ejercicios • [STATIC] La URL UUU:8080/NombreYClub?nombre=XXX&club=YYY contesta con una página que dice “Hola XXX, Viva el YYY!” Desarrollar una página HTML estática que permita que el usuario teclee su nombre y elija un club entre una lista determinada y le conteste en los términos anteriores.
Aplicaciones en capas, I Capa web Capa negocio Capa cliente
Frameworks para aplicaciones en capas • Java Enterprise Edition (Java EE 6) • Multiplataforma • Basado en el lenguaje Java • Extensivo y flexible, pero no simple • Microsoft .NET • Plataforma Windows • Multilenguaje (C#, VB, C++ CLI, …) • Eficiente y simple, orientado a servicios
Aplicaciones en capas, II • Capa cliente • Navegador, aplicación o servidor • Accede a un servidor haciendo peticiones • Puede tener un grado alto de interactividad (interfaz de usuario similar a las aplicaciones stand alone) mediante la utilización de un lenguaje de programación (Java, Javascript, Flash, …) y la conexión con el servidor (Ajax)
Aplicaciones en capas, III • Capa Web (servidor) • Gestiona la interacción entre los clientes y la capa de negocio. • Tareas: • Generación dinámica de contenidos • Atención a los clientes, devolviéndoles los resultados enviados por la capa de negocio • Control del flujo de pantallas o páginas en el cliente • Mantenimiento del estado de los datos de las sesiones de usuario • Gestión de la lógica básica de la aplicación, manteniendo datos temporalmente en JavaBeans
Aplicaciones en capas, IVTecnologías utilizadas en la capa web
Aplicaciones en capas, V • Capa de negocio • Componentes que proporcionan la lógica de negocio de la aplicación • Tecnologías: • EJB (Enterprise JavaBeans) • JAX-WS (Java API for XML Web Services) • Entidades de la API de persistencia • Servicios Web (SOAP, …)
Aplicaciones en capas, VI • Capa de sistemas de información empresarial (EIS) • Servidores de bases de datos • Sistemas de planificación de recursos • Mainframes • …
Aplicaciones en capas, VII Tecnologías utilizadas en la capa EIS • JDBC (Java DataBase Conectivity) • API de Persistencia • Arquitectura de conexión J2EE • JTA (Java Transaction API)
Otras tecnologías (.NET) • ASP (Active Server Pages) • ADO (ActiveX Data Objects) • SOAP (Servicios Web)
Servidor de aplicaciones, I • Proporciona los servicios de Java EE • Alberga componentes de distintos tipos correspondientes a las capas de la aplicación, guardadas en contenedores • Proporciona servicios a las componentes (atención de solicitudes, seguridad, concurrencia y gestión del ciclo de vida) • Proporciona acceso a APIs como acceso por nombre, transacciones y correo electrónico
Servidor de aplicaciones, II: Contenedores • Contenedor web: Gestiona el ciclo de vida de las componentes (Servlets, JSPs, …) y su acceso al contexto (sesión, …) • Contenedor de clientes de la aplica-ción: Interfaz con aplicaciones cliente • Contenedor de EJB: Interfaz con Enterprise beans • Su objetivo es optimizar el rendimiento. Juegan el papel de caches sofisticadas