SlideShare uma empresa Scribd logo
1 de 30
Introducción modelo MVC y arquitectura Struts


                    mayo de 2005
¿Qué es STRUTS?
   Strut: “Componente estructural no visible
    que soporta una construcción o
    estructura”
   Framework Opensource para construir
    aplicaciones web Java
       Parte de proyecto Jakarta de Apache
       Se basa en JavaBeans, ResourceBundles,
        XML, Jakarta Commons
       Fomenta el modelo MVC Model 2
Tecnologías subyacentes (I)
       HTTP
         Protocolo original para transporte HTML
         Hoy transporte genérico de archivos
         Sin estado  “solución” cookies y reescritura de URLs
         Petición (GET, POST)  Respuesta (RESPONSE)
       Common Gateway Interface (CGI)
         Origen del “web dinámico”
         Programas ejecutados por Servidor Web
         Dependientes de plataforma y necesitan “entender” HTML y
          HTTP
         Sin estandarización
Tecnologías subyacentes (II)
       Java Servlets
         Resuelven dos problemas de CGIs:
             Rendimiento: Una instancia múltiples hilos
             Portabilidad: write-once run-anywhere
             Abstracción de sesión, petición, respuesta en base objetos Java.
         Clases java que corren en contenedores (Tomcat, Jrun,
          Weblogic, …)
             Conexión: Servidor web (Apache, IIS) pasa al contenedor ciertas
              URLs
             Autónomo: El contenedor incorpora servidor web
         Inconvenientes:
             Misma pega que CGIs  Programa renderiza html

          out.println("<P>One line of HTML.</P>");
          out.println("<P>Another line of HTML.</P>");
Tecnologías subyacentes (III)
       Java Server Pages (JSP)
          Servlet del “revés” página HTML con inserciones de código.
          Contenido dinámico:
             Inserción código Java:
                 Expresiones: <%= %>

              <B> Hora de visita de esta página: <%= new Date() %></B>

                 Scriptlets <% %>
                 Declaraciones <!% %>
             JSP Tags (mayor limpieza que insertar código):
                 Incorporadas (JSTL)
                 Extensible  Taglibs (Struts, definidas por usuario).
       Alternativas en otros lenguajes:
          ASP (VisualBasic, .Net)
          PHP
Tecnologías subyacentes (IV)
   Java Beans
       Clases java con estructura común
           Propiedades privadas (datos)
           Métodos de acceso públicos:
               Lectura (accessors): getPropiedad() isPropiedad()
               Escritura (mutators): setPropiedad()
       Manipulables por introspección (sin
        necesidad de conocer nombre de
        propiedades)
       Estándar de paso de variables a JSPs
JSP Model 1
   JSP Model 1. Primera recomendación
    diseño de aplicaciones web en base a
    JSPs
       JSPs, JavaBeans, JDBC
   Vigente para aplicaciones sencillas
Problemas Model 1
       Código spaguetti:
          Lógica compleja conduce a diversos flujos que se entremezclan
           dentro de un JSP (condiciones y bucles)
       Difícil reutilización
          Cada JSP suele ser autocontenida, incorpora toda la funcionalidad.
           Prácticas Copy&Paste (repetición de funcionalidad)
       El código tiende a ser no modular
          Las actualizaciones requieren modificaciones en muchos sitios. Dificil
           de modificar aspecto.
       Tareas entremezcladas (perdida de eficiencia)
          Diseñador gráfico debe saber programar y/o programador diseñar
           interfaces gráficas.
       Depuración problemática
          Los contenedores de servlets devuelve error en línea de JSP
           convertido a Servlet.
Origen MVC
       Finales de los 70  Aparecen GUIs
       MVC (Model – View – Controller):
          Comienzos de los 80 framework de Smalltalk para crear interfaces de
           usuario
       Partes:
          Modelo: Sistema contenedor de datos
          Vista: Sistema de presentación (salida)
          Controlador: Lógica de interacción usuario (entrada)
Model 2
       Especificación 0.92 de Servlets/JSP introduce la arquitectura Model 2.
          Incorpora conceptos de MVC  A veces se conoce MVC2 o Web MVC
       Separación lógica/presentación:
          Datos representados en JavaBeans (modelo), que contienen lógica de
           negocio y estado de la aplicación.
          Servlets (controlador) gestionan acceso a datos y el flujo de navegación
           (controlador)
          JSPs gestionan la presentación (vista).
¿Por qué Struts?
       Aplicaciones web componentes críticos para
        empresas:
         Listas en tiempo record
         Deben durar
       Gran cantidad de tecnologías disponibles Java
         Presentación: JSPs, plantillas Velocity
         Manejo de BBDD: JDBC y EJBs

       ¿Cómo juntamos todo en tiempo record?
                      Struts
Introducción Struts
       Struts:
          Elemento central  Controlador MVC. Puente entre vista y
           controlador
          Incorpora elementos necesarios “invisibles” comunes a toda
           aplicación web profesional
       Beneficios
          Refuerza la modularidad y partición de la aplicación
          Incrementa la separación de roles
          Incrementa la manejabilidad del código
          Incrementa la extensibilidad del código
          Centra al desarrollador en la lógica de negocio.
          Reduce el TCO de una aplicación, reduciendo sus costes de
           desarrollo y mantenimiento
Arquitectura
       Componentes del sistema:
         Modelo:
             Combinación de EJBs, Java Beans y clases derivadas de la clase
              de Struts ActionForm
         Vista:
             Representada por JSPs, para los cuales Struts proporciona
              librerías de JSP Tags. Aunque no obliga a usar JSPs, favorece
              su utilización.
         Controlador:
             Implementado a través del servlet ActionServlet que llama a las
              clases derivadas de Action que se definan.
       Configuración:
         A través del fichero web.xml (común a toda aplicación web) y
          el fichero struts-config.xml (común a toda aplicación que haga
          uso de struts)
Componentes Controlador (I)
       Interacción con el usuario:
         Formularios  Recogen información de usuario.
         Acciones (Actions)  Envían datos de formularios.
         Hiperenlaces  Envían usuario a otra pág.
       Componentes principales de Struts:
         ActionForm. Permite definir formularios e
          hiperenlaces
         Actions a medida. Derivando de la clase base
          Action se implentan acciones.
Componentes Controlador (II)
   Hiperenlaces:
       Enlace a un recurso en la aplicación
       Modelados a través de clase
        ActionForward.
       Definidos por configuración. Ejemplo:
        <forward name="welcome“
         path="/pages/index.jsp"/>
       JSPs y otros componentes lo referenciarán
        por el nombre (“welcome”)
Componentes Controlador (III)
       Formularios:
          HTML y HTTP proporcionan mecanismos para enviar información de usuario
           a la aplicación
          Struts proporciona la clase ActionForm.
              Son JavaBeans con métodos para validar los datos recibidos
          El desarrollador sólo define el ActionForm y Struts mapea automáticamente
           sus propiedades con campos del formulario HTML con el mismo nombre.

           public final class LogonForm extends ActionForm {
              private String username = null;
              public String getUsername() {
                 return (this.username);
              }
              public void setUsername(String username) {
                 this.username = username;
              }
           }
Componentes Controlador (IV)
   Formularios:
       Referencia desde configuración:
        <form-bean
        name="articleForm"
        type="org.apache.artimus.struts.Form"/>
Componentes Controlador (V)
       Actions a medida:
         En un formulario “action” es a dónde van dirigidos los datos
         Struts proporciona Action para recoger los datos en cuestión,
          que se le proporcionan a través de un ActionForm.
         Ejemplo:
          public final class LogonAction extends Action {
            public ActionForward perform(ActionMapping mapping,
                                     ActionForm form,
                                     HttpServletRequest request,
                                     HttpServletResponse response)
                        throws IOException, ServletException {
              MyForm myForm = (MyForm) form;
               // ...
               return mapping.findForward("continue");
            }
          }
Componentes Controlador (VI)
       Actions a medida:
          Desde la versión 1.1 de Struts se prefiere el método execute() frente a
           perform()
       ActionMapping.
       De cara al exterior sirve para proporcionar una URI a un Action determinado.
       Se especifica por configuración.
       Ejemplo:
    <action-mappings>
    <action
            path="/logonSubmit"                               URI
            type="app.LogonAction"
            name="logonForm"                              Clase derivada
            scope="request"                              de ActionMapping
            validate="true"
            input="/pages/logon.jsp"/>                           ¿Requiere
    </action-mappings>                                           validación?
Componentes Controlador (VII)

   ActionServlet:
       Pieza central. “Reparte el juego”.
       Recibe todas las peticiones y redirecciona al
        action determinado. También completa y
        valida los ActionForms.
       Extensible. Puede extenderse a través de
        subclases (no habitual).
Componentes Modelo (I)

       JavaBeans:
         No son parte de Struts, sino son parte de
          especificación de Java.
         Struts no fija en dónde se almacena el modelo
          (EJBs, BBDD relacional, servidor LDAP).
         Habitualmente relacionados con ActionForms.
            Recomendable separarlos
            Struts ofrece funcionalidad para “mapear” propiedades de
             ActionForm a JavaBean del modelo
Componentes Vista (I)

       JSPs:
         Struts no obliga utilizar JSPs para la vista, podría
          utilizarse otras alternativas (templates velocity).
         Struts incluye librerías de tags.
            Facilitan interacción con componentes de controlador
            Incorporan lógica útil (p.e. facilidad para incorporar bucles
             en presentación)
            Incorporan funcionalidad adicional: Soporte para
             internacionalización.
         Alguna funcionalidad se ha incorporado en la
          especificación JSTL (Struts es anterior a JSTL)
Componentes Vista (II)
       JSPs:
         struts-html.tld. Tags JSP que encapsulan componentes de
          formularios HTML.

                JSP “normal”: <input type="text"
                name="username“
                             value="<
                %=loginBean.getUsername() >"/>
                Tags Struts:    <html:text
                property="username"/>


         struts-bean.tld. Tags JSP para el manejo de beans y soporte
          de internacionalización adicional al nativo de Java (parte de
          funcionalidad en JSTL).
Componentes Vista (III)
       JSPs:
         struts-logic.tld. Tags para testear valores de
          propiedades (mucha funcionalidad presente en
          JSTL), iterar sobre colecciones, etc.
            Ejemplo. Iteración sobre beans de una HashTable:
             <logic:iterate id="element" name="myhashtable">
                Next element is <bean:write
                                  name="element“
                                  property="value"/>
             </logic:iterate>


         struts-nested.tld. Tags JSP que permiten acceder
          de forma ordenada a beans encapsulados en otros
          beans (anidamiento).
Componentes Vista (IV)

       JSPs:
         struts-tiles.tld. Tags para crear bloques
          reutilizables de presentación (tiles). Facilita cambiar
          el aspecto general de una aplicación (Look & Feel).
            Se basa en la directiva include de los JSPs
            Permite crear definiciones de pantalla en base a bloques:
             cabecera, pie, menu, cuerpo, etc.
            Permite definir distribuciones uniformes para todo el sitio (layouts)
            Ofrece un soporte alternativo para internacionalización (Tiles
             diferentes dependiendo del Locale).
            Vistas diferentes según roles, tipo de navegador, etc.
Configuración (I)
   web.xml:
       Todo lo que recibe el ServletContainer va a
        parar al ActionServlet.
       Mapping de URLs (2 esquemas):
           *.do
           /do/*
       Especificación de qué librerías de tags se
        van a utilizar (incluir taglibs adecuadas)
            <taglib>
               <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
               <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
            </taglib>
Configuración (II)
       ApplicationResources.properties
         Fichero properties utilizado por defecto para las
          etiquetas de los mensajes internacionalizados.
       struts-config.xml:
         Los componentes están débilmente acoplados para
          permitir reutilización e independencia unos de otros
         Struts-config.xml configura la relación entre ellos.
         Define principalmente:
             Action-mappings: Qué Actions ha de aceptar el
              ActionServlet
             Form-beans: Las clases ActionForms que aceptará como
              entrada la aplicación
Configuración (III)
   Ejemplo struts-config.xml:
Todo en uno
Referencias
       MVC:
         http://ootips.org/mvc-pattern.html
         http://www.object-arts.com/EducationCentre/Overviews/M
       JSP/Servlets:
         http://java.sun.com/products/servlet/
         http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/
       Struts:
         http://struts.apache.org/
         http://rollerjm.free.fr/pro/Struts11.html

Mais conteúdo relacionado

Mais procurados

Etiquetas básicas jsf
Etiquetas básicas jsfEtiquetas básicas jsf
Etiquetas básicas jsf
lauritat_9
 
86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf
pablo lopez
 

Mais procurados (20)

Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
 
Charla
CharlaCharla
Charla
 
Javaserver Faces (jsf)
Javaserver Faces (jsf)Javaserver Faces (jsf)
Javaserver Faces (jsf)
 
spring
springspring
spring
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on Rails
 
Strust
StrustStrust
Strust
 
Introducción a Java y BEA (2008)
Introducción a Java y BEA (2008)Introducción a Java y BEA (2008)
Introducción a Java y BEA (2008)
 
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 2
 
Documentacion struts2
Documentacion struts2Documentacion struts2
Documentacion struts2
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Etiquetas básicas jsf
Etiquetas básicas jsfEtiquetas básicas jsf
Etiquetas básicas jsf
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
 
Introducción a JEE
Introducción a JEEIntroducción a JEE
Introducción a JEE
 
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
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
 
86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf86535551 ciclo-de-vida-jsf
86535551 ciclo-de-vida-jsf
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
 
JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server Faces
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’s
 

Destaque (6)

Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
Objetos Implícitos en JSP.
Objetos Implícitos en JSP.Objetos Implícitos en JSP.
Objetos Implícitos en JSP.
 
Introducción Spring Framework
Introducción Spring FrameworkIntroducción Spring Framework
Introducción Spring Framework
 
Administración de base de datos oracle - sesion 0
Administración de base de datos oracle - sesion 0Administración de base de datos oracle - sesion 0
Administración de base de datos oracle - sesion 0
 
Administración de Oracle - Tema 02 - Instalación
Administración de Oracle - Tema 02 - InstalaciónAdministración de Oracle - Tema 02 - Instalación
Administración de Oracle - Tema 02 - Instalación
 
Frameworks JAVA EE 5 de marzo de 2.012
Frameworks JAVA EE 5 de marzo de 2.012Frameworks JAVA EE 5 de marzo de 2.012
Frameworks JAVA EE 5 de marzo de 2.012
 

Semelhante a 01 introducción

Frameworks de Java
Frameworks de JavaFrameworks de Java
Frameworks de Java
ragmyl
 
Documentacion struts2 laura.palma
Documentacion struts2 laura.palmaDocumentacion struts2 laura.palma
Documentacion struts2 laura.palma
Laura Palma
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
Sergi Almar i Graupera
 
Patronmvc 090816170431-phpapp02
Patronmvc 090816170431-phpapp02Patronmvc 090816170431-phpapp02
Patronmvc 090816170431-phpapp02
Felipe Villamizar
 

Semelhante a 01 introducción (20)

Frameworks de Java
Frameworks de JavaFrameworks de Java
Frameworks de Java
 
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
 
Patron mvc struts
Patron mvc strutsPatron mvc struts
Patron mvc struts
 
04 actions
04 actions04 actions
04 actions
 
Documentacion struts2 laura.palma
Documentacion struts2 laura.palmaDocumentacion struts2 laura.palma
Documentacion struts2 laura.palma
 
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 de Struts2: Unidad Didáctica 00 Introduccion
Curso de Struts2: Unidad Didáctica 00 IntroduccionCurso de Struts2: Unidad Didáctica 00 Introduccion
Curso de Struts2: Unidad Didáctica 00 Introduccion
 
Documentacion struts 2
Documentacion struts 2Documentacion struts 2
Documentacion struts 2
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
Documentacionstruts2 luiggi
Documentacionstruts2 luiggiDocumentacionstruts2 luiggi
Documentacionstruts2 luiggi
 
10.desarrollowebconjava
10.desarrollowebconjava10.desarrollowebconjava
10.desarrollowebconjava
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
Patronmvc 090816170431-phpapp02
Patronmvc 090816170431-phpapp02Patronmvc 090816170431-phpapp02
Patronmvc 090816170431-phpapp02
 
Patron Mvc Struts 1 y 2
Patron Mvc Struts 1 y 2Patron Mvc Struts 1 y 2
Patron Mvc Struts 1 y 2
 
Arquitectura java web
Arquitectura java webArquitectura java web
Arquitectura java web
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Clase_MVC_I.pptx
Clase_MVC_I.pptxClase_MVC_I.pptx
Clase_MVC_I.pptx
 
Aplicaciones en capas1
Aplicaciones en capas1Aplicaciones en capas1
Aplicaciones en capas1
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)
 

Mais de Roberto Moreno Doñoro (20)

21 bibsw tablasyotros
21 bibsw tablasyotros21 bibsw tablasyotros
21 bibsw tablasyotros
 
20 curvaselipticas
20 curvaselipticas20 curvaselipticas
20 curvaselipticas
 
19 protocoloscripto
19 protocoloscripto19 protocoloscripto
19 protocoloscripto
 
18 correoseguro
18 correoseguro18 correoseguro
18 correoseguro
 
17 certdigitalespkcs
17 certdigitalespkcs17 certdigitalespkcs
17 certdigitalespkcs
 
16 autenticafirma
16 autenticafirma16 autenticafirma
16 autenticafirma
 
15 funcioneshash
15 funcioneshash15 funcioneshash
15 funcioneshash
 
14 cifraasimetrica
14 cifraasimetrica14 cifraasimetrica
14 cifraasimetrica
 
13 ciframochilas
13 ciframochilas13 ciframochilas
13 ciframochilas
 
12 cifrasimetrica
12 cifrasimetrica12 cifrasimetrica
12 cifrasimetrica
 
11 cifraflujo
11 cifraflujo11 cifraflujo
11 cifraflujo
 
10 ciframoderna
10 ciframoderna10 ciframoderna
10 ciframoderna
 
09 cifraclasica
09 cifraclasica09 cifraclasica
09 cifraclasica
 
08 compalgoritmos
08 compalgoritmos08 compalgoritmos
08 compalgoritmos
 
07 teorianumeros
07 teorianumeros07 teorianumeros
07 teorianumeros
 
06 teoriainfo
06 teoriainfo06 teoriainfo
06 teoriainfo
 
05 gestionseg
05 gestionseg05 gestionseg
05 gestionseg
 
04 calidadinfo
04 calidadinfo04 calidadinfo
04 calidadinfo
 
02 breveintrocripto
02 breveintrocripto02 breveintrocripto
02 breveintrocripto
 
01 presentalibro
01 presentalibro01 presentalibro
01 presentalibro
 

Último

RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
pvtablets2023
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
NadiaMartnez11
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 

Último (20)

Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 

01 introducción

  • 1. Introducción modelo MVC y arquitectura Struts mayo de 2005
  • 2. ¿Qué es STRUTS?  Strut: “Componente estructural no visible que soporta una construcción o estructura”  Framework Opensource para construir aplicaciones web Java  Parte de proyecto Jakarta de Apache  Se basa en JavaBeans, ResourceBundles, XML, Jakarta Commons  Fomenta el modelo MVC Model 2
  • 3. Tecnologías subyacentes (I)  HTTP  Protocolo original para transporte HTML  Hoy transporte genérico de archivos  Sin estado  “solución” cookies y reescritura de URLs  Petición (GET, POST)  Respuesta (RESPONSE)  Common Gateway Interface (CGI)  Origen del “web dinámico”  Programas ejecutados por Servidor Web  Dependientes de plataforma y necesitan “entender” HTML y HTTP  Sin estandarización
  • 4. Tecnologías subyacentes (II)  Java Servlets  Resuelven dos problemas de CGIs:  Rendimiento: Una instancia múltiples hilos  Portabilidad: write-once run-anywhere  Abstracción de sesión, petición, respuesta en base objetos Java.  Clases java que corren en contenedores (Tomcat, Jrun, Weblogic, …)  Conexión: Servidor web (Apache, IIS) pasa al contenedor ciertas URLs  Autónomo: El contenedor incorpora servidor web  Inconvenientes:  Misma pega que CGIs  Programa renderiza html out.println("<P>One line of HTML.</P>"); out.println("<P>Another line of HTML.</P>");
  • 5. Tecnologías subyacentes (III)  Java Server Pages (JSP)  Servlet del “revés” página HTML con inserciones de código.  Contenido dinámico:  Inserción código Java:  Expresiones: <%= %> <B> Hora de visita de esta página: <%= new Date() %></B>  Scriptlets <% %>  Declaraciones <!% %>  JSP Tags (mayor limpieza que insertar código):  Incorporadas (JSTL)  Extensible  Taglibs (Struts, definidas por usuario).  Alternativas en otros lenguajes:  ASP (VisualBasic, .Net)  PHP
  • 6. Tecnologías subyacentes (IV)  Java Beans  Clases java con estructura común  Propiedades privadas (datos)  Métodos de acceso públicos:  Lectura (accessors): getPropiedad() isPropiedad()  Escritura (mutators): setPropiedad()  Manipulables por introspección (sin necesidad de conocer nombre de propiedades)  Estándar de paso de variables a JSPs
  • 7. JSP Model 1  JSP Model 1. Primera recomendación diseño de aplicaciones web en base a JSPs  JSPs, JavaBeans, JDBC  Vigente para aplicaciones sencillas
  • 8. Problemas Model 1  Código spaguetti:  Lógica compleja conduce a diversos flujos que se entremezclan dentro de un JSP (condiciones y bucles)  Difícil reutilización  Cada JSP suele ser autocontenida, incorpora toda la funcionalidad. Prácticas Copy&Paste (repetición de funcionalidad)  El código tiende a ser no modular  Las actualizaciones requieren modificaciones en muchos sitios. Dificil de modificar aspecto.  Tareas entremezcladas (perdida de eficiencia)  Diseñador gráfico debe saber programar y/o programador diseñar interfaces gráficas.  Depuración problemática  Los contenedores de servlets devuelve error en línea de JSP convertido a Servlet.
  • 9. Origen MVC  Finales de los 70  Aparecen GUIs  MVC (Model – View – Controller):  Comienzos de los 80 framework de Smalltalk para crear interfaces de usuario  Partes:  Modelo: Sistema contenedor de datos  Vista: Sistema de presentación (salida)  Controlador: Lógica de interacción usuario (entrada)
  • 10. Model 2  Especificación 0.92 de Servlets/JSP introduce la arquitectura Model 2.  Incorpora conceptos de MVC  A veces se conoce MVC2 o Web MVC  Separación lógica/presentación:  Datos representados en JavaBeans (modelo), que contienen lógica de negocio y estado de la aplicación.  Servlets (controlador) gestionan acceso a datos y el flujo de navegación (controlador)  JSPs gestionan la presentación (vista).
  • 11. ¿Por qué Struts?  Aplicaciones web componentes críticos para empresas:  Listas en tiempo record  Deben durar  Gran cantidad de tecnologías disponibles Java  Presentación: JSPs, plantillas Velocity  Manejo de BBDD: JDBC y EJBs  ¿Cómo juntamos todo en tiempo record? Struts
  • 12. Introducción Struts  Struts:  Elemento central  Controlador MVC. Puente entre vista y controlador  Incorpora elementos necesarios “invisibles” comunes a toda aplicación web profesional  Beneficios  Refuerza la modularidad y partición de la aplicación  Incrementa la separación de roles  Incrementa la manejabilidad del código  Incrementa la extensibilidad del código  Centra al desarrollador en la lógica de negocio.  Reduce el TCO de una aplicación, reduciendo sus costes de desarrollo y mantenimiento
  • 13. Arquitectura  Componentes del sistema:  Modelo:  Combinación de EJBs, Java Beans y clases derivadas de la clase de Struts ActionForm  Vista:  Representada por JSPs, para los cuales Struts proporciona librerías de JSP Tags. Aunque no obliga a usar JSPs, favorece su utilización.  Controlador:  Implementado a través del servlet ActionServlet que llama a las clases derivadas de Action que se definan.  Configuración:  A través del fichero web.xml (común a toda aplicación web) y el fichero struts-config.xml (común a toda aplicación que haga uso de struts)
  • 14. Componentes Controlador (I)  Interacción con el usuario:  Formularios  Recogen información de usuario.  Acciones (Actions)  Envían datos de formularios.  Hiperenlaces  Envían usuario a otra pág.  Componentes principales de Struts:  ActionForm. Permite definir formularios e hiperenlaces  Actions a medida. Derivando de la clase base Action se implentan acciones.
  • 15. Componentes Controlador (II)  Hiperenlaces:  Enlace a un recurso en la aplicación  Modelados a través de clase ActionForward.  Definidos por configuración. Ejemplo: <forward name="welcome“ path="/pages/index.jsp"/>  JSPs y otros componentes lo referenciarán por el nombre (“welcome”)
  • 16. Componentes Controlador (III)  Formularios:  HTML y HTTP proporcionan mecanismos para enviar información de usuario a la aplicación  Struts proporciona la clase ActionForm.  Son JavaBeans con métodos para validar los datos recibidos  El desarrollador sólo define el ActionForm y Struts mapea automáticamente sus propiedades con campos del formulario HTML con el mismo nombre. public final class LogonForm extends ActionForm { private String username = null; public String getUsername() { return (this.username); } public void setUsername(String username) { this.username = username; } }
  • 17. Componentes Controlador (IV)  Formularios:  Referencia desde configuración: <form-bean name="articleForm" type="org.apache.artimus.struts.Form"/>
  • 18. Componentes Controlador (V)  Actions a medida:  En un formulario “action” es a dónde van dirigidos los datos  Struts proporciona Action para recoger los datos en cuestión, que se le proporcionan a través de un ActionForm.  Ejemplo: public final class LogonAction extends Action { public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { MyForm myForm = (MyForm) form; // ... return mapping.findForward("continue"); } }
  • 19. Componentes Controlador (VI)  Actions a medida:  Desde la versión 1.1 de Struts se prefiere el método execute() frente a perform()  ActionMapping.  De cara al exterior sirve para proporcionar una URI a un Action determinado.  Se especifica por configuración.  Ejemplo: <action-mappings> <action path="/logonSubmit" URI type="app.LogonAction" name="logonForm" Clase derivada scope="request" de ActionMapping validate="true" input="/pages/logon.jsp"/> ¿Requiere </action-mappings> validación?
  • 20. Componentes Controlador (VII)  ActionServlet:  Pieza central. “Reparte el juego”.  Recibe todas las peticiones y redirecciona al action determinado. También completa y valida los ActionForms.  Extensible. Puede extenderse a través de subclases (no habitual).
  • 21. Componentes Modelo (I)  JavaBeans:  No son parte de Struts, sino son parte de especificación de Java.  Struts no fija en dónde se almacena el modelo (EJBs, BBDD relacional, servidor LDAP).  Habitualmente relacionados con ActionForms.  Recomendable separarlos  Struts ofrece funcionalidad para “mapear” propiedades de ActionForm a JavaBean del modelo
  • 22. Componentes Vista (I)  JSPs:  Struts no obliga utilizar JSPs para la vista, podría utilizarse otras alternativas (templates velocity).  Struts incluye librerías de tags.  Facilitan interacción con componentes de controlador  Incorporan lógica útil (p.e. facilidad para incorporar bucles en presentación)  Incorporan funcionalidad adicional: Soporte para internacionalización.  Alguna funcionalidad se ha incorporado en la especificación JSTL (Struts es anterior a JSTL)
  • 23. Componentes Vista (II)  JSPs:  struts-html.tld. Tags JSP que encapsulan componentes de formularios HTML. JSP “normal”: <input type="text" name="username“ value="< %=loginBean.getUsername() >"/> Tags Struts: <html:text property="username"/>  struts-bean.tld. Tags JSP para el manejo de beans y soporte de internacionalización adicional al nativo de Java (parte de funcionalidad en JSTL).
  • 24. Componentes Vista (III)  JSPs:  struts-logic.tld. Tags para testear valores de propiedades (mucha funcionalidad presente en JSTL), iterar sobre colecciones, etc.  Ejemplo. Iteración sobre beans de una HashTable: <logic:iterate id="element" name="myhashtable"> Next element is <bean:write name="element“ property="value"/> </logic:iterate>  struts-nested.tld. Tags JSP que permiten acceder de forma ordenada a beans encapsulados en otros beans (anidamiento).
  • 25. Componentes Vista (IV)  JSPs:  struts-tiles.tld. Tags para crear bloques reutilizables de presentación (tiles). Facilita cambiar el aspecto general de una aplicación (Look & Feel).  Se basa en la directiva include de los JSPs  Permite crear definiciones de pantalla en base a bloques: cabecera, pie, menu, cuerpo, etc.  Permite definir distribuciones uniformes para todo el sitio (layouts)  Ofrece un soporte alternativo para internacionalización (Tiles diferentes dependiendo del Locale).  Vistas diferentes según roles, tipo de navegador, etc.
  • 26. Configuración (I)  web.xml:  Todo lo que recibe el ServletContainer va a parar al ActionServlet.  Mapping de URLs (2 esquemas):  *.do  /do/*  Especificación de qué librerías de tags se van a utilizar (incluir taglibs adecuadas) <taglib> <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib>
  • 27. Configuración (II)  ApplicationResources.properties  Fichero properties utilizado por defecto para las etiquetas de los mensajes internacionalizados.  struts-config.xml:  Los componentes están débilmente acoplados para permitir reutilización e independencia unos de otros  Struts-config.xml configura la relación entre ellos.  Define principalmente:  Action-mappings: Qué Actions ha de aceptar el ActionServlet  Form-beans: Las clases ActionForms que aceptará como entrada la aplicación
  • 28. Configuración (III)  Ejemplo struts-config.xml:
  • 30. Referencias  MVC:  http://ootips.org/mvc-pattern.html  http://www.object-arts.com/EducationCentre/Overviews/M  JSP/Servlets:  http://java.sun.com/products/servlet/  http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/  Struts:  http://struts.apache.org/  http://rollerjm.free.fr/pro/Struts11.html