aplicaciones web. … http aplicaciones con páginas estáticas subdirectorio especial: \web-inf...

38
Aplicaciones web

Upload: amada-modesto

Post on 24-Apr-2015

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Aplicaciones web

Page 2: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Aplicaciones web

HTTP

Page 3: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 4: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Aplicación con páginas estáticas: Ejemplo

Hello

WEB-INF

web.xml

Hello.html

web

SubDir

Bye.html

URLS: http://.../Hello/Hello.htmlhttp://.../Hello/SubDir/Bye.html

Page 5: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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>

Page 6: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 7: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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ónEjemplo: 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>

Page 8: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 9: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 10: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 11: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Estructura de módulos webPÚBLICO

PRIVADO

Page 12: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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.

Page 13: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 14: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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/*).

Page 15: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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.

Page 16: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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.

Page 17: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

URLs

• Son las direcciones utilizadas para acceder a un recurso webhttp://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

Page 18: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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)

Page 19: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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.

Page 20: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 21: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Peticiones a través de un formulario: Ejemplo

http://localhost:8080/TTTWeb/?voto=SI

Page 22: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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>

Page 23: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 24: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 25: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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.

Page 26: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Aplicaciones en capas, I

Capacliente

Capaweb

Capanegocio

Page 27: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 28: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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)

Page 29: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Aplicaciones en capas, III

• Capa Web (servidor)– Gestiona la interacción entre los clientes y la

capa de negocio.– Tareas:1. Generación dinámica de contenidos2. Atención a los clientes, devolviéndoles los

resultados enviados por la capa de negocio3. Control del flujo de pantallas o páginas en el cliente4. Mantenimiento del estado de los datos de las

sesiones de usuario5. Gestión de la lógica básica de la aplicación,

manteniendo datos temporalmente en JavaBeans

Page 30: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Aplicaciones en capas, IVTecnologías utilizadas en la capa web

ServletsClases Java que procesan peticiones y construyen respuestas

JSPPlantillas de documentos con instrucciones Java para su generación

JSFEtiquetas y extensiones para simplificar la definición de páginas JSP

Reglas de navegación entre páginas

STLBiblioteca de etiquetas que encapsulan funcionalidad de páginas JSP

JBCObjetos que almacenan datos temporalmente para la aplicación

Page 31: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Arquitectura de la capa web

Page 32: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Integración de componentes web

Page 33: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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, …)

Page 34: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Aplicaciones en capas, VI

• Capa de sistemas de información empresarial (EIS)– Servidores de bases de datos– Sistemas de planificación de recursos– Mainframes– …

Page 35: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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)

Page 36: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

Otras tecnologías (.NET)

• ASP (Active Server Pages)

• ADO (ActiveX Data Objects)

• SOAP (Servicios Web)

Page 37: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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

Page 38: Aplicaciones web. … HTTP Aplicaciones con páginas estáticas Subdirectorio especial: \WEB-INF Fichero de configuración (opcional): \WEB-INF\web.xml Ficheros

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