Estructura de un sitio web
� Estructura lógica vs física del sitio
Tecnologías de aplicaciones web
Localizador uniforme de recursos
Sitios web y aplicaciones web
� Un sitio web es una colección de archivos estáticos, páginas HTML, gráficos y otros archivos diversos.
� Una aplicación web es un sitio web con
Tecnologías de aplicaciones web
� Una aplicación web es un sitio web con funcionalidad dinámica en el servidor. Una aplicación web ejecuta programas en el servidor.
� Un Servicio Web es un servicio que una aplicación ofrece a otra a través de World Wide Web y transferencia de datos en XML.
Tipos de componentes visuales� Presentación de datos
� Incluye todos los datos presentados en una pantalla visible.� Existen numerosas formas de presentación, como gráficos, hojas de cálculo, listados, etc.
� Formularios de datos
Desarrollo de componentes visuales
� Formularios de datos� Los formularios de entrada de datos también se consideran componentes visuales.
� Ayudas de navegación� Este tipo de vistas incluye menús, hipervínculos, mapas del sitio, etc.
� Pantallas informativas o ventanas emergentes� Este tipo de vistas incluye texto de bienvenida, instrucciones, pantallas de ayuda, mensajes de error, cuadros de confirmación, etc.
Proceso de solicitud y respuesta
1. El navegador se conecta al contenedor web
2. El contenedor web crea dos objetos
Desarrollo de componentes visuales
2. El contenedor web crea dos objetos con los flujos de entrada/salida
3. El contenedor web ejecuta el servlet4. El servlet utiliza el flujo de salida para
generar la respuesta
4º: El servlet utiliza el flujo de salida para generar la respuesta
Desarrollo de componentes visuales
Attributes[R/W/D]
ContentType[W]
Writer[W]
WebContainer
Utilización de las API de petición y respuesta
Utilización de las API de petición y respuesta
HttpServeltRequest HttpServletResponse
serviceservice()()
Parameters[R]
Session[R/W/D]
Cookies [R]
OutputStream[W]
Cookies[W]
Redirect[W]
Desarrollo de un servlet de HTTP simple
Desarrollo de componentes visuales
Ej: Ligas v.1Ej: Ligas v.1
Estructura física de la aplicación: fichero WAR
Desarrollo de componentes visuales
Estructura lógicaEstructura lógica
Tipos de componentes controladores� Procesan la entrada del usuario
� La entrada de una solicitud HTTP se suministra mediante formularios web (o HTML). Estos formularios permiten al usuario introducir datos de texto, seleccionar botones de opción, casillas de verificación, listas desplegables, etc. En los formularios web se usa un botón de envío para enviar los datos al servidor web.
Desarrollo de componentes controladores
un botón de envío para enviar los datos al servidor web.� Permiten navegar por la pantalla
� En un nivel elemental, los hipervínculos de las páginas web son una forma de navegación en pantalla. Algunos mecanismos de navegación pueden requerir datos (como usar una lista desplegable) para seleccionar la próxima pantalla donde navegar.
� Preparan datos para componentes visuales� Algunos controladores sólo pueden preparar datos de negocio para presentarlos en una vista. Un buen ejemplo de ello son los informes.
Métodos HTTP GET y POST� El método HTTP GET se utiliza cuando:
� El procesamiento de la solicitud es idempotente.� Esto significa que la solicitud no tiene efectos secundarios en el servidor.
La cantidad de datos del formulario es pequeña.
Desarrollo de componentes controladores
� La cantidad de datos del formulario es pequeña.� Se desea asignar un marcador a la solicitud.
� El método HTTP POST se utiliza cuando:� El procesamiento de la solicitud modifica el estado del servidor, como al almacenar datos en una base de datos.
� La cantidad de datos del formulario es grande.� El contenido de los datos no debe aparecer en la URL (por ejemplo, contraseñas).
Desarrollo de servlets controladores
1. Recuperar parámetros del formulario de la solicitud HTTP.
2. Efectuar las conversiones de datos de los parámetros del formulario.
Desarrollo de componentes controladores
2. Efectuar las conversiones de datos de los parámetros del formulario.
3. Verificar los parámetros del formulario.4. Ejecutar la lógica de negocio.5. Distribuir a los siguientes componentes visuales según los resultados de los pasos anteriores.
Capturas de pantalla de manejo de errores
Desarrollo de formularios dinámicos
Ej: Ligas v.3
Ej: Ligas v.3.1
Contexto de servlet� Un objeto ServletContext es la representación de tiempo de ejecución de la aplicación web
Compartición de recursos mediante el contexto de servlet
Modelo de arquitectura de la liga de fútbol
Compartición de recursos mediante el contexto de servlet
Ej: Ligas v.4
Desarrollo de un receptor de eventos de contexto de servlet
Compartición de recursos mediante el contexto de servlet
Ej: Ligas v.4.1
Diseño de componentes de servicio
� Las operaciones CRUD relativas a entidades no las puede realizar el componente de entidad en sí
Diseño de la capa de negocio
componente de entidad en sí
MVC en Framework Struts
Desarrollo de aplicaciones web mediante Struts
Un solo servletUn solo servlet
Ej: Ligas v.6
Patrón Frontal Controller
� Todas las peticiones *.do pasan por el Action Servlet Struts
Desarrollo de aplicaciones web mediante Struts
Estructura MVC de Struts� Servlet de controlador de infraestructura
� Struts suministra la clase ActionServlet. � Este servlet (y otras clases de soporte) leen el archivo de configuración de Struts para configurar las asignaciones entre los patrones URL y las clases de acción (controlador).
Desarrollo de aplicaciones web mediante Struts
los patrones URL y las clases de acción (controlador).
� Clases básicas� La estructura Struts tiene numerosas clases. Al construir una aplicación, puede concentrarse en ampliar sólo algunas de ellas. En concreto, se hereda de la clase Action para crear componentes controladores.
� Archivos de configuración� Struts proporciona la definición de tipo de documento (DTD) del archivo struts-config.xml.
Sesiones de contenedor web
� HTTP es un protocolo sin sesión� El contenedor se encarga de la gestión
Desarrollo de aplicaciones web mediante gestión de sesión
Caso de uso: Registrarse en una liga
Desarrollo de aplicaciones web mediante gestión de sesión
Ej: Ligas v.7
Pantallas, formularios, servlets, actions, forwards…
Desarrollo de aplicaciones web mediante gestión de sesión
Interfaz HttpSession
Desarrollo de aplicaciones web mediante gestión de sesión
Timeout
Deprecated methods
Timeout
Creación / Cierre
Timeout de sesión
� Configurado en web.xml
Desarrollo de aplicaciones web mediante gestión de sesión
� Manejado por API
Gestión de sesión mediante cookies
Desarrollo de aplicaciones web mediante gestión de sesión
En primera conexión
Nombre estandarizado
En resto de conexiones…
Uso de reescritura de URL para gestión de sesión
Desarrollo de aplicaciones web mediante gestión de sesión
Patrón de objeto de acceso a datos (DAO)
Integración de aplicaciones web con bases de datos
Oculta la gestión del SQL las clases de Servicio
Ventajas del patrón DAO� La lógica de negocio y la lógica de acceso a datos están separadas.
� Los objetos de acceso a datos fomentan la reutilización y la flexibilidad al cambiar el sistema.
Se pueden crear nuevos servicios de negocio que reutilicen
Integración de aplicaciones web con bases de datos
� Se pueden crear nuevos servicios de negocio que reutilicen la lógica de acceso a datos en las clases DAO.
� Los desarrolladores que escriben otros servlets pueden reutilizar el mismo código de acceso a datos.
� Permite realizar cambios en tecnologías de cliente (frontend).
� Permite cambiar los componentes de la capa de web sin alterar la lógica de acceso a datos existente.
� Permite realizar cambios en tecnologías de BDD.
Tecnología JavaServer Pages
� Los diseñadores web diseñan sin saber Java
� Programadores escriben código sin
Desarrollo de páginas JSP
� Programadores escriben código sin preocuparse por el diseño web
Desarrollo e implementación de páginas de JSP
Desarrollo de páginas JSP
Jerarquía lógicaJerarquía de implementación
Elementos de secuencia de comandos de JSP
Desarrollo de páginas JSP
Las secuencias de comandos están desaconsejadas
Directivas JSP� Las directivas son mensajes al contenedor de JSP
� Ejemplos:ElementoElemento DescripciónDescripción
Forma general: <%@ directive { attr=”value” }* %>
Desarrollo de páginas JSP
ElementoElemento DescripciónDescripción
<%@ page ... %><%@ page ... %>
Permite importar clases Java, especificar el Permite importar clases Java, especificar el
tipo de la respuesta (“text/html” por omisión), tipo de la respuesta (“text/html” por omisión),
etcéteraetcétera
<%@ include ... %><%@ include ... %>Permite incluir otros ficheros antes de que la Permite incluir otros ficheros antes de que la
página sea traducida a un servletpágina sea traducida a un servlet
<%@ taglib ... %><%@ taglib ... %>
Declara una biblioteca de etiquetas con Declara una biblioteca de etiquetas con
accionesacciones personalizadas para ser utilizadas en personalizadas para ser utilizadas en
la páginala página
Directiva import
� Inserta el texto de otro recurso en tiempo de compilación
Desarrollo de páginas JSP
Elementos de “scripting”
ElementoElemento DescripciónDescripción
<% ... %><% ... %> ScriptletScriptlet. se usa para meter código Java dentro. se usa para meter código Java dentro
ExpresiónExpresión. Permite acceder al valor devuelto por . Permite acceder al valor devuelto por
Desarrollo de páginas JSP
<%= ... %><%= ... %>ExpresiónExpresión. Permite acceder al valor devuelto por . Permite acceder al valor devuelto por
una expresión en Java e imprimirlo en OUTuna expresión en Java e imprimirlo en OUT
<%! ... %><%! ... %>DeclaraciónDeclaración. Usada para declarar variables y . Usada para declarar variables y
métodos en la clase correspondiente a la páginamétodos en la clase correspondiente a la página
<%<%---- … … ----%>%>
ComentarioComentario. Comentario ignorado cuando se . Comentario ignorado cuando se
traduce la página JSP en un servlet.traduce la página JSP en un servlet.
(comentario en el HTML <!(comentario en el HTML <!---- commentcomment��))
Ejemplo: expresión, saludo.jsp
<%=
Desarrollo de páginas JSP
expresión
Nota: Si se necesita usar los caracteres "%>" dentro de un scriptlet, hay que usar "%\>" y “<\%”
JSP: Objetos predefinidos
� El código java incrustado en JSP tiene acceso a los mismos objetos predefinidos que tenían los servlets
Desarrollo de páginas JSP
predefinidos que tenían los servlets� Aquí se llaman como sigue:
�� requestrequest
�� responseresponse
�� pageContextpageContext
�� sessionsession
�� applicationapplication
�� outout
�� configconfig
Se puede acceder a
ellos directamente
desde los “scriptlets”
Directiva taglib� Declara que la página usa una librería de tags (acciones)
<%@ taglib uri=”http://www.mycorp/supertags” prefix=”super” %>...
Alias definido en web.xml
Desarrollo de páginas JSP
Syntax
<%@ taglib ( uri=”tagLibraryURI” | tagdir=”tagDir” ) prefix=”tagPrefix” %>
� Identifica la librería por su URI� Le asocia un prefijo para usar en el código de la JSP
...<super:doMagic>...</super:doMagic>
Alias definido en web.xml
Roles de trabajo de Java EE en aplicaciones Web
� Diseñadores de web� Desarrolladores de componentes web� Desarrolladores de componentes de
Desarrollo de páginas JSP con etiquetas personalizadas
� Desarrolladores de componentes de negocio
� Las etiquetas personalizadas permiten desarrollar por completo una página de JSP sin utilizar código Java
JSP con bibliotecas de etiquetaspersonalizadas
Desarrollo de páginas JSP con etiquetas personalizadas
Ej: Ligas v.9
Con etiquetasCon scriplet
Qué es una biblioteca de etiquetas personalizadas
Desarrollo de páginas JSP con etiquetas personalizadas
Componentes de aplicación de Struts
Desarrollo de aplicaciones web mediante formularios de acción de Struts
Repaso de los elementos de modelo
Desarrollo de aplicaciones web mediante formularios de acción de Struts
Ej: Ligas v.9
Repaso de los elementos de vista
Desarrollo de aplicaciones web mediante formularios de acción de Struts
Desarrollo de una clase ActionForm
Desarrollo de aplicaciones web mediante formularios de acción de Struts
Un objeto representa al formulario
Biblioteca de etiquetas html deStruts
Desarrollo de aplicaciones web mediante formularios de acción de Struts
Inclusión de segmentos en páginas de JSP
� La directiva include
Creación de componentes de presentación reutilizables
� La acción estándar jsp:include
Desarrollo de diseños con Struts Tiles
Creación de componentes de presentación reutilizables
layoutPage.jsp
Ligas v.xResumen de versiones� V.0: contenido estático� V.1: lista de ligas dinámica� V.2: añadir ligas, formulario estático� V.2.1: form con servlet, lista estaciones en servelt-param� V.3: gestión de errores de formulario, doPost y doGet� V.3: gestión de errores de formulario, doPost y doGet� V.3.1: no se pierden datos en formulario erróneo� V.4: cargar ligas de contexto de aplicación� V.4.1: cargar datos de fichero� V.5: capa de servicio� V.6: añade Struts� V.7: gestión de la sesión� V.8: filtro� V.9: vista con jsp, tags jsp y formularios Struts