SlideShare una empresa de Scribd logo
1 de 26
Combinación de tecnologías en la
  construcción de Aplicaciones
              Web
       Juan Ramón Pérez Pérez
          Universidad de Oviedo
          jrpp@pinon.ccu.uniovi.es
De las tecnologías a la
              arquitectura
• Ya conocemos varias tecnologías que nos sirven
  de base para construir servidores de información.
• Pero, ¿Cómo construimos una aplicación web?
   – ¿Utilizamos una sola tecnología?
      • ¿Cuál de ellas podemos utilizar?
   – ¿Combinamos varias tecnologías recogiendo sus
     ventajas?
      • ¿En qué parte de la aplicación encaja cada tecnología?



                                                                 2
Tecnologías servlets y JSP
• Pudiendo utilizar JSP. ¿Es necesario desarrollar
  algún servlet?
• ¿Cuál es la mejor forma de combinar servlets y
  JSP?
• ¿Dónde situamos el código escrito en Java?
• ¿Hay otros componentes involucrados en el
  procesamiento de peticiones como los JavaBeans?
• Si es así, ¿en qué parte de la arquitectura aparecen
  y cuál es su papel?
                                                         3
Qué es la arquitectura de una
            aplicación
• Una arquitectura se utiliza para organizar las
  diferentes partes de una aplicación.
• Las aplicaciones web pueden tener muchos
  elementos:
   – Páginas JSP, clases Java, archivos HTML.
• Definir una arquitectura:
   – Ayudará a decidir cómo dividir la aplicación web.
   – Proporcionará una pauta para definir la forma en que
     todos los componentes trabajen juntos para llevar a
     cabo la funcionalidad que se pretende conseguir con la
     aplicación.
                                                              4
Arquitecturas para construir
       Aplicaciones Web
• Arquitectura centrada en páginas. JSPs
  gestionan las peticiones directamente. 
  Modelo 1.
• Arquitectura de “dispatcher” o centrada
  en servlets. Un servlet o un JSP actúa de
  mediador o controlador, delegando la
  resolución de peticiones en páginas JSP y
  JavaBeans.  Modelo 2.
                                              5
Arquitectura centrada en páginas
• Se utilizan páginas JSP/HTML para interactuar
  con el usuario (lógica de presentación).
• Páginas JSP responsables de controlar el flujo de
  la aplicación: recibir peticiones, direccionar a la
  siguiente página (lógica de control o
  procesamiento).
• El acceso a los datos se lleva a cabo desde la
  misma página JSP o con JavaBeans, según la
  variante.
                                                        6
Esquema de la arquitectura
    centrada en páginas
                               Nivel de
                JSP            lógica de
                 JSP           negocio
                  JSP
HTML               JSP
 HTML
 / HTML
   JSP
   / HTML
     JSP
     / / JSP
       JSP
                               JavaBeans
                                JavaBeans
                                 JavaBeans
                                  JavaBeans
 Nivel de           Nivel de
 presentación       Datos
                                      BD
                                              7
Arquitectura centrada en páginas
• Ventajas:
  – es simple de programar y permite al creador de las
    páginas generar contenido dinámico fácilmente,
    basándose en la petición y el estado de la aplicación.
• Inconvenientes:
  – Tiene problemas de mantenimiento cuando la
    aplicación crece. Muchos scriptlets incrustados en las
    páginas JSP.
  – No sólo reduce modularidad y oportunidades de
    reutilización de código; sino que también proporciona
    una separaciones de papeles de desarrollo muy pobre.
                                                             8
Vista-Página (I)
• Esta arquitectura básica conlleva:
  – Invocaciones directas a páginas del servidor
  – Código Java incrustado (scriplets) y
  – Etiquetas JSP que generan dinámicamente la
    salida por sustitución dentro del HTML.
  – El acceso a datos se realiza directamente sobre
    la página JSP.


                                                      9
Vista-Página (y II)
• Beneficios:
   – Desde el punto de vista del desarrollador es una
     aproximación muy directa al problema y fácil de
     abordar.
   – El código es fácil de localizar ya que se encuentra junto
     con la página que gestiona.
• Inconvenientes
   – Sólo permite abordar aplicaciones web de pequeña
     escala.
   – El que todo el código esté dentro de las página impide
     separar papeles en el desarrollo.
                                                              10
Vista-Página con JavaBeans
• Se utilizan JavaBeans para acceder a los datos.
• La utilización de componentes JavaBeans permite:
   – Separar el código Java relacionado con la lógica del
     negocio del código de almacenamiento.
   – Se podrían utilizar etiquetas de usuario en la página
     JSP para hacer referencia al JavaBean.
   – Permite realizar una pequeña separación de papeles en
     el desarrollo de la aplicación web.


                                                        11
Separación de papeles en el
   desarrollo de una aplicación web
                                Dominio de los

    Presentación                desarrolladores

        de          Lógica
       datos         de la
                   aplicación



                    Acceso
                      a              Base de
                    datos             datos
Dominio de los
Diseñadores web
                                                  12
Arquitectura de “dispatcher” o
              MVC
• Los JSP se utilizan para generar el nivel de
  presentación y los Servlets para realizar las tareas
  que requieren procesamiento.
• Además el controlador gestiona la navegación,
  decidiendo a que página JSP debe redireccionarse
  a continuación.
• No aparece lógica de procesamiento dentro de la
  presentación JSP: simplemente accede a los
  JavaBeans que previamente se han cargado para
  extraer dinámicamente su contenido.
                                                     13
Esquema de la arquitectura MVC
            1. Envío de petición              Nivel de
            al controlador
                                   Servlet    lógica de
                                      o       negocio
  HTML                               JSP
   HTML
   / HTML
     JSP                                      2. Invocación
     / HTML
       JSP                                    de Beans
       / / JSP
         JSP       3. Redirección a
                   la página                     JavaBeans
                                                  JavaBeans
                                                   JavaBeans
                                                    JavaBeans
 Nivel de                                Nivel de
 presentación                            Datos
                                                       BD
                                                                14
Componentes arquitectura MVC
                    Datos
Modelo       (Propiedades Beans)    Vista
Beans                               JSPs
                                                    Info.Interfaz
                         Evento                        (HTML)
 Evento                 (forward)                        Datos
(petición)                                  (<jsp:getproperty>)
                Controlador                       Info.Eventos
                  servlet                          (parámetros)
                               Evento
                              (petición)     Interfaz
                                            Navegador
                                                             15
El Modelo
• Representa la lógica de negocio de una
  aplicación.
• Encapsula las reglas de negocio en
  componentes que son fáciles de probar,
  permiten mejorar la calidad del software y
  promueven la reutilización.


                                               16
Componentes de estado
• El estado:
   – Define el conjunto actual de valores del modelo.
   – Incluye métodos para cambiar estos valores.
• Estos métodos recogen parte de la lógica de
  negocio.
• Deberían de ser independientes del protocolo que
  se utilizara para acceder a ellos.
• Los JavaBeans son la elección lógica para
  implementar los componentes de estado.

                                                        17
Cualidades del diseño en
             JavaBeans
• La construcción independiente de estos
  componentes permite las siguientes cualidades de
  diseño:
   – Reutilización, la eliminación de la lógica de
     presentación, permite que diferentes aplicaciones hagan
     uso de la misma lógica de negocio.
   – Calidad, recogiendo la lógica de negocio en el mismo
     sitio, se puede probar y revisar.
   – Robustez, encapsulando toda la lógica en un solo sitio
     podemos facilitar su reutilización y reducir las
     posibilidades de que aparezca un error.
                                                          18
Componentes de proceso
• Las acciones:
  – Definen los cambios permitidos para los
    estados en respuesta a los eventos.
• La lógica de negocio también determina
  como se construyen los componentes de
  proceso.


                                              19
Alternativas en el diseño de
     componentes de proceso
• El diseño de estos componentes permite más
  alternativas que los de estado:
   – En sistemas simples, las acciones pueden ser llevadas a
     cabo en el controlador; pero generalmente no se
     recomienda.
   – Normalmente se plantea un nivel de componentes de
     proceso para capturar los requisitos que dirigen la
     interacción con los componentes de estado.
• Frecuentemente estos componentes están ligados a
  un protocolo para poder obtener información del
  evento.
                                                           20
La vista
• Constituye la lógica de presentación de una
  aplicación.
• Los componentes de la vista obtienen el estado
  actual del sistema del modelo y proporcionan el
  interfaz de usuario para el protocolo involucrado
  (en nuestro caso HTTP de los navegadores web).
• Como parte de la generación del interfaz de
  usuario la vista presenta los eventos que el usuario
  puede activar en cada momento.
• JSP es la elección natural para implementar la
  vista.                                             21
El controlador
• Proporciona unión a toda la arquitectura.
• Responsable de:
   –   recibir eventos,
   –   determinar cual es el manejador apropiado,
   –   invocar este manejador y
   –   determinar la generación de la respuesta apropiada.
• Los servlets son la elección ideal para la
  tecnología del controlador.

                                                             22
Tareas que debería gestionar el
           controlador
• Seguridad, asegurar autentificación y autorización.
  Esto podría delegarse en el motor de servlets.
• Identificación de eventos.
• Preparar el modelo, asegurar la disponibilidad de
  los componentes de modelo requeridos.
• Procesamiento del evento.
• Gestión de errores, gestionar los errores generados
  por los manejadores.
• Activar la generación de la respuesta, pasando el
  control al generador apropiado.
                                                   23
Cuestiones de diseño
• Esta arquitectura implica, de forma inherente, un
  cierto acoplamiento entre los distintos
  componentes que deberíamos de evitar. Ej.: La
  vista debe proporcionar información de eventos de
  forma que puedan ser identificados de forma única
  por el controlador.
• La vista tiene acoplamiento con el controlador por
  la información de eventos y el controlador está
  acoplado tanto con el modelo como con la vista.
• Para superar este inconveniente se puede utilizar
  un fichero de inicialización, con las capacidades 24
  de introspección y reflectividad de Java.
Ejemplo de arquitectura MVC
(desde el contenedor            Controlador (servlet)
de servlets)
                                       Tabla manejadores
init                 init( )           eventos
                                       Evento – Manejador
 petición           doGet( )
                    doPost( )


                                      process( )     Clases
                                   process( )        manejadoras
     respuesta                       forward( )      de eventos
  respuesta                        forward( )
                                                             25
Proyecto Struts
•   Qué es Struts
•   Particularidades del MVC en Struts
•   ¿Para qué sirve?
•   ¿Cómo se puede utilizar?
•   Más información
    – http://jakarta.apache.org/struts
    – http://jakarta.apache.org/struts/userGuide
    – http://www.programacion.com/java/tutorial.joa_struts.html


                                                          26

Más contenido relacionado

La actualidad más candente

JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesAitor Acedo
 
JDBC MONOGRAFIA
JDBC MONOGRAFIAJDBC MONOGRAFIA
JDBC MONOGRAFIASefira111
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EECarlos Gavidia-Calderon
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo WebEmilio Aviles Avila
 
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones webFelipe
 
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, PrimefacesSeminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, PrimefacesAlejandro Bolaños Ussa
 
[ES] Introdución al desarrollo de aplicaciones web en java
[ES] Introdución al desarrollo de aplicaciones  web en java[ES] Introdución al desarrollo de aplicaciones  web en java
[ES] Introdución al desarrollo de aplicaciones web en javaEudris Cabrera
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’sayreonmx
 
Sesion 3. desarrollo de aplicaciones jee
Sesion 3. desarrollo de aplicaciones jeeSesion 3. desarrollo de aplicaciones jee
Sesion 3. desarrollo de aplicaciones jeeHéctor Santos
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xmlgilhorak
 

La actualidad más candente (20)

Jdbc Mysql
Jdbc MysqlJdbc Mysql
Jdbc Mysql
 
JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server Faces
 
JDBC MONOGRAFIA
JDBC MONOGRAFIAJDBC MONOGRAFIA
JDBC MONOGRAFIA
 
Carrera php programmer no costo
Carrera php programmer no costoCarrera php programmer no costo
Carrera php programmer no costo
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
 
Modulo 1 java ee platform
Modulo 1   java ee platformModulo 1   java ee platform
Modulo 1 java ee platform
 
Introducción a JEE
Introducción a JEEIntroducción a JEE
Introducción a JEE
 
Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
Curso Básico de JDBC
Curso Básico de JDBCCurso Básico de JDBC
Curso Básico de JDBC
 
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones web
 
JDBC
JDBCJDBC
JDBC
 
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, PrimefacesSeminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
 
[ES] Introdución al desarrollo de aplicaciones web en java
[ES] Introdución al desarrollo de aplicaciones  web en java[ES] Introdución al desarrollo de aplicaciones  web en java
[ES] Introdución al desarrollo de aplicaciones web en java
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’s
 
Sesion 3. desarrollo de aplicaciones jee
Sesion 3. desarrollo de aplicaciones jeeSesion 3. desarrollo de aplicaciones jee
Sesion 3. desarrollo de aplicaciones jee
 
06. jsf (java server faces) (1)
06. jsf (java server faces) (1)06. jsf (java server faces) (1)
06. jsf (java server faces) (1)
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xml
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
Java Web - Introduccion
Java Web - IntroduccionJava Web - Introduccion
Java Web - Introduccion
 

Destacado

Empaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con NetbeansEmpaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con NetbeansLaura Folgado Galache
 
java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )brayan0015
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Javaquesada_diego
 
POO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoPOO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoActimel
 

Destacado (7)

07 Javabeans
07   Javabeans07   Javabeans
07 Javabeans
 
Distribución de aplicaciones
Distribución de aplicacionesDistribución de aplicaciones
Distribución de aplicaciones
 
Empaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con NetbeansEmpaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con Netbeans
 
Java netbeans-clase-001
Java netbeans-clase-001Java netbeans-clase-001
Java netbeans-clase-001
 
java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
POO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoPOO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y Polimorfismo
 

Similar a 5 c arquitecturas_aplicaciones_web

01 jee5-componentes
01 jee5-componentes01 jee5-componentes
01 jee5-componentesUTN
 
Web Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’sWeb Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’sPablo Pellegrinet
 
Capa de presentacion jsp
Capa de presentacion jspCapa de presentacion jsp
Capa de presentacion jspmirianapaola
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Robert Rayco Quiroz
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slidesmundojava
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web modernoSebastián Rocco
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con JavaEudris Cabrera
 
Oracle WebLogic Server 11g - Disponibilidad, rendimiento, escalabilidad
Oracle WebLogic Server 11g - Disponibilidad, rendimiento, escalabilidadOracle WebLogic Server 11g - Disponibilidad, rendimiento, escalabilidad
Oracle WebLogic Server 11g - Disponibilidad, rendimiento, escalabilidadavanttic Consultoría Tecnológica
 
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptintroduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptBYRONMIGUELSUBUYUCPA
 
01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdf01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdfMarvelNanosoft
 
1 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_11 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_1josezapana
 

Similar a 5 c arquitecturas_aplicaciones_web (20)

proyecto java
proyecto javaproyecto java
proyecto java
 
01 jee5-componentes
01 jee5-componentes01 jee5-componentes
01 jee5-componentes
 
Jsp
JspJsp
Jsp
 
Web Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’sWeb Service buscador de localizaciones de IP’s
Web Service buscador de localizaciones de IP’s
 
Capa de presentacion jsp
Capa de presentacion jspCapa de presentacion jsp
Capa de presentacion jsp
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 
JavaServer Page
JavaServer PageJavaServer Page
JavaServer Page
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
 
Introduccion java ser
Introduccion java serIntroduccion java ser
Introduccion java ser
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)
 
ACERCA DE JSP
ACERCA DE JSP ACERCA DE JSP
ACERCA DE JSP
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slides
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web moderno
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
 
Oracle WebLogic Server 11g - Disponibilidad, rendimiento, escalabilidad
Oracle WebLogic Server 11g - Disponibilidad, rendimiento, escalabilidadOracle WebLogic Server 11g - Disponibilidad, rendimiento, escalabilidad
Oracle WebLogic Server 11g - Disponibilidad, rendimiento, escalabilidad
 
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.pptintroduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
 
Clase ii intro j2 ee resumen
Clase ii   intro j2 ee resumenClase ii   intro j2 ee resumen
Clase ii intro j2 ee resumen
 
Eclipse
EclipseEclipse
Eclipse
 
01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdf01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdf
 
1 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_11 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_1
 

5 c arquitecturas_aplicaciones_web

  • 1. Combinación de tecnologías en la construcción de Aplicaciones Web Juan Ramón Pérez Pérez Universidad de Oviedo jrpp@pinon.ccu.uniovi.es
  • 2. De las tecnologías a la arquitectura • Ya conocemos varias tecnologías que nos sirven de base para construir servidores de información. • Pero, ¿Cómo construimos una aplicación web? – ¿Utilizamos una sola tecnología? • ¿Cuál de ellas podemos utilizar? – ¿Combinamos varias tecnologías recogiendo sus ventajas? • ¿En qué parte de la aplicación encaja cada tecnología? 2
  • 3. Tecnologías servlets y JSP • Pudiendo utilizar JSP. ¿Es necesario desarrollar algún servlet? • ¿Cuál es la mejor forma de combinar servlets y JSP? • ¿Dónde situamos el código escrito en Java? • ¿Hay otros componentes involucrados en el procesamiento de peticiones como los JavaBeans? • Si es así, ¿en qué parte de la arquitectura aparecen y cuál es su papel? 3
  • 4. Qué es la arquitectura de una aplicación • Una arquitectura se utiliza para organizar las diferentes partes de una aplicación. • Las aplicaciones web pueden tener muchos elementos: – Páginas JSP, clases Java, archivos HTML. • Definir una arquitectura: – Ayudará a decidir cómo dividir la aplicación web. – Proporcionará una pauta para definir la forma en que todos los componentes trabajen juntos para llevar a cabo la funcionalidad que se pretende conseguir con la aplicación. 4
  • 5. Arquitecturas para construir Aplicaciones Web • Arquitectura centrada en páginas. JSPs gestionan las peticiones directamente.  Modelo 1. • Arquitectura de “dispatcher” o centrada en servlets. Un servlet o un JSP actúa de mediador o controlador, delegando la resolución de peticiones en páginas JSP y JavaBeans.  Modelo 2. 5
  • 6. Arquitectura centrada en páginas • Se utilizan páginas JSP/HTML para interactuar con el usuario (lógica de presentación). • Páginas JSP responsables de controlar el flujo de la aplicación: recibir peticiones, direccionar a la siguiente página (lógica de control o procesamiento). • El acceso a los datos se lleva a cabo desde la misma página JSP o con JavaBeans, según la variante. 6
  • 7. Esquema de la arquitectura centrada en páginas Nivel de JSP lógica de JSP negocio JSP HTML JSP HTML / HTML JSP / HTML JSP / / JSP JSP JavaBeans JavaBeans JavaBeans JavaBeans Nivel de Nivel de presentación Datos BD 7
  • 8. Arquitectura centrada en páginas • Ventajas: – es simple de programar y permite al creador de las páginas generar contenido dinámico fácilmente, basándose en la petición y el estado de la aplicación. • Inconvenientes: – Tiene problemas de mantenimiento cuando la aplicación crece. Muchos scriptlets incrustados en las páginas JSP. – No sólo reduce modularidad y oportunidades de reutilización de código; sino que también proporciona una separaciones de papeles de desarrollo muy pobre. 8
  • 9. Vista-Página (I) • Esta arquitectura básica conlleva: – Invocaciones directas a páginas del servidor – Código Java incrustado (scriplets) y – Etiquetas JSP que generan dinámicamente la salida por sustitución dentro del HTML. – El acceso a datos se realiza directamente sobre la página JSP. 9
  • 10. Vista-Página (y II) • Beneficios: – Desde el punto de vista del desarrollador es una aproximación muy directa al problema y fácil de abordar. – El código es fácil de localizar ya que se encuentra junto con la página que gestiona. • Inconvenientes – Sólo permite abordar aplicaciones web de pequeña escala. – El que todo el código esté dentro de las página impide separar papeles en el desarrollo. 10
  • 11. Vista-Página con JavaBeans • Se utilizan JavaBeans para acceder a los datos. • La utilización de componentes JavaBeans permite: – Separar el código Java relacionado con la lógica del negocio del código de almacenamiento. – Se podrían utilizar etiquetas de usuario en la página JSP para hacer referencia al JavaBean. – Permite realizar una pequeña separación de papeles en el desarrollo de la aplicación web. 11
  • 12. Separación de papeles en el desarrollo de una aplicación web Dominio de los Presentación desarrolladores de Lógica datos de la aplicación Acceso a Base de datos datos Dominio de los Diseñadores web 12
  • 13. Arquitectura de “dispatcher” o MVC • Los JSP se utilizan para generar el nivel de presentación y los Servlets para realizar las tareas que requieren procesamiento. • Además el controlador gestiona la navegación, decidiendo a que página JSP debe redireccionarse a continuación. • No aparece lógica de procesamiento dentro de la presentación JSP: simplemente accede a los JavaBeans que previamente se han cargado para extraer dinámicamente su contenido. 13
  • 14. Esquema de la arquitectura MVC 1. Envío de petición Nivel de al controlador Servlet lógica de o negocio HTML JSP HTML / HTML JSP 2. Invocación / HTML JSP de Beans / / JSP JSP 3. Redirección a la página JavaBeans JavaBeans JavaBeans JavaBeans Nivel de Nivel de presentación Datos BD 14
  • 15. Componentes arquitectura MVC Datos Modelo (Propiedades Beans) Vista Beans JSPs Info.Interfaz Evento (HTML) Evento (forward) Datos (petición) (<jsp:getproperty>) Controlador Info.Eventos servlet (parámetros) Evento (petición) Interfaz Navegador 15
  • 16. El Modelo • Representa la lógica de negocio de una aplicación. • Encapsula las reglas de negocio en componentes que son fáciles de probar, permiten mejorar la calidad del software y promueven la reutilización. 16
  • 17. Componentes de estado • El estado: – Define el conjunto actual de valores del modelo. – Incluye métodos para cambiar estos valores. • Estos métodos recogen parte de la lógica de negocio. • Deberían de ser independientes del protocolo que se utilizara para acceder a ellos. • Los JavaBeans son la elección lógica para implementar los componentes de estado. 17
  • 18. Cualidades del diseño en JavaBeans • La construcción independiente de estos componentes permite las siguientes cualidades de diseño: – Reutilización, la eliminación de la lógica de presentación, permite que diferentes aplicaciones hagan uso de la misma lógica de negocio. – Calidad, recogiendo la lógica de negocio en el mismo sitio, se puede probar y revisar. – Robustez, encapsulando toda la lógica en un solo sitio podemos facilitar su reutilización y reducir las posibilidades de que aparezca un error. 18
  • 19. Componentes de proceso • Las acciones: – Definen los cambios permitidos para los estados en respuesta a los eventos. • La lógica de negocio también determina como se construyen los componentes de proceso. 19
  • 20. Alternativas en el diseño de componentes de proceso • El diseño de estos componentes permite más alternativas que los de estado: – En sistemas simples, las acciones pueden ser llevadas a cabo en el controlador; pero generalmente no se recomienda. – Normalmente se plantea un nivel de componentes de proceso para capturar los requisitos que dirigen la interacción con los componentes de estado. • Frecuentemente estos componentes están ligados a un protocolo para poder obtener información del evento. 20
  • 21. La vista • Constituye la lógica de presentación de una aplicación. • Los componentes de la vista obtienen el estado actual del sistema del modelo y proporcionan el interfaz de usuario para el protocolo involucrado (en nuestro caso HTTP de los navegadores web). • Como parte de la generación del interfaz de usuario la vista presenta los eventos que el usuario puede activar en cada momento. • JSP es la elección natural para implementar la vista. 21
  • 22. El controlador • Proporciona unión a toda la arquitectura. • Responsable de: – recibir eventos, – determinar cual es el manejador apropiado, – invocar este manejador y – determinar la generación de la respuesta apropiada. • Los servlets son la elección ideal para la tecnología del controlador. 22
  • 23. Tareas que debería gestionar el controlador • Seguridad, asegurar autentificación y autorización. Esto podría delegarse en el motor de servlets. • Identificación de eventos. • Preparar el modelo, asegurar la disponibilidad de los componentes de modelo requeridos. • Procesamiento del evento. • Gestión de errores, gestionar los errores generados por los manejadores. • Activar la generación de la respuesta, pasando el control al generador apropiado. 23
  • 24. Cuestiones de diseño • Esta arquitectura implica, de forma inherente, un cierto acoplamiento entre los distintos componentes que deberíamos de evitar. Ej.: La vista debe proporcionar información de eventos de forma que puedan ser identificados de forma única por el controlador. • La vista tiene acoplamiento con el controlador por la información de eventos y el controlador está acoplado tanto con el modelo como con la vista. • Para superar este inconveniente se puede utilizar un fichero de inicialización, con las capacidades 24 de introspección y reflectividad de Java.
  • 25. Ejemplo de arquitectura MVC (desde el contenedor Controlador (servlet) de servlets) Tabla manejadores init init( ) eventos Evento – Manejador petición doGet( ) doPost( ) process( ) Clases process( ) manejadoras respuesta forward( ) de eventos respuesta forward( ) 25
  • 26. Proyecto Struts • Qué es Struts • Particularidades del MVC en Struts • ¿Para qué sirve? • ¿Cómo se puede utilizar? • Más información – http://jakarta.apache.org/struts – http://jakarta.apache.org/struts/userGuide – http://www.programacion.com/java/tutorial.joa_struts.html 26

Notas del editor

  1. Tanto servlets como JSP permiten construir aplicaciones web.