Download Introducción a Java EE

Document related concepts
no text concepts found
Transcript
Aplicaciones web
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
web.xml
URLS:
Hello.html
SubDir
Bye.html
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 seguida 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 administració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 presentación o de servicios (programas que reciben peticiones de información o de ejecució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 formulario 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
cliente
Capa
web
Capa
negocio
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:
1. Generación dinámica de contenidos
2. Atención a los clientes, devolviéndoles los
resultados enviados por la capa de negocio
3. Control del flujo de pantallas o páginas en el cliente
4. Mantenimiento del estado de los datos de las
sesiones de usuario
5. Gestión de la lógica básica de la aplicación,
manteniendo datos temporalmente en JavaBeans
Aplicaciones en capas, IV
Tecnologías utilizadas en la capa web
Clases Java que procesan peticiones y
Servlets
construyen respuestas
Plantillas de documentos con
JSP
instrucciones Java para su generación
Etiquetas y extensiones para simplificar
la definición de páginas JSP
JSF
Reglas de navegación entre páginas
Biblioteca de etiquetas que encapsulan
STL
funcionalidad de páginas JSP
Objetos que almacenan datos
JBC
temporalmente para la aplicación
Arquitectura de la capa web
Integración de componentes 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 aplicación: Interfaz con aplicaciones cliente
• Contenedor de EJB: Interfaz con
Enterprise beans
• Su objetivo es optimizar el rendimiento.
Juegan el papel de caches sofisticadas