SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
Patrón MVC con
   STRUTS
Agenda
    Introducción
    Conceptos fundamentales
    Apache Struts Framework
        Características
        Controlador
        Vista
        Modelo
        Utilización
    Apache Struts Project
Introducción (…)
   Las aplicaciones Web son diferentes a los sitios
    Web convencionales porque éstas son capaces
    de crear una respuesta dinámica.
   Muchos sitios Web ofrecen sólo páginas
    estáticas, en cambio una aplicación Web es
    capaz de interactuar con bases de datos y
    lógica de negocios con la finalidad de
    personalizar la respuesta a enviar.
Introducción (…)
   Ventajas de los servlet frente a los CGI:

       Más rápidos
       Más potentes
       Portables
       Extensibles

   Desventajas
       Escribir líneas infinitas println() para enviar código HTML al
        navegador

   Solución
                         JavaServerPage
Introducción (…)
 JSP permite escritura de código Java
  dentro de ellos consiguiendo todas las
  ventajas tanto de los servlets como del
  código HTML
 Sigue habiendo problemas propios de las
  aplicaciones web: El control de flujo
Introducción (…)
   Las aplicaciones Web en general tienen tres
    aspectos a considerar en su desarrollo:
     El código de acceso, inserción, consulta,
      actualización y/o eliminación de los datos.
     El código del diseño de las páginas a mostrar.
     El código que controla el flujo de las páginas de la
      aplicación.
   Con la práctica nos damos cuenta que si una
    aplicación Web grande tiene estos aspectos
    muy mezclados se vuelve difícil de mantener.
Introducción (…)
   Una forma de separar estos aspectos es usando
    la arquitectura MVC: Modelo-Vista-Controlador,
    donde:
     El modelo representa a la lógica de negocios
      (manipulación de datos).
     La vista representa la presentación de los datos
      (diseño de páginas).
     El controlador representa el código de navegación
      de la aplicación (control de flujo).
Patrones de Diseño
   Los patrones de diseño son soluciones
    efectivas de problemas comunes en el diseño
    de software.
   La efectividad de un patrón ya ha sido
    comprobada.
   Un patrón es reusable.
   Los patrones facilitan el aprendizaje de los
    programadores inexpertos.
Patrones de Diseño (…)
   Los patrones de diseño se pueden clasificar,
    según su propósito, en:
       Patrones creacionales: abstraen el proceso de
        instanciación y ocultan los detalles de cómo los
        objetos son creados o inicializados.
       Patrones estructurales: describen como las clases
        y objetos pueden ser combinados para formar
        grandes estructuras y proporcionar nuevas
        funcionalidades.
Patrones de Diseño (…)
    Patrones de comportamiento: tratan de
     cómo definir la comunicación e interacción
     entre los objetos de un sistema con la
     finalidad de reducir el acoplamiento entre
     éstos.
Patrón MVC
    El patrón de diseño Modelo-Vista-
     Controlador fue aportado originariamente por
     el lenguaje de programación SmallTalk.
    Consiste en dividir una aplicación en tres
     componentes: Modelo, Vista y Controlador.
    Se basa en la separación de
     responsabilidades ya que cada una de las
     partes se encarga de un aspecto específico
     y no interfiere con el de las otras.
Patrón MVC: Modelo
   Representa las capas de lógica de negocios y
    persistencia de datos de la aplicación.
   Está formada por todos los objetos de negocio
    que soportan los procesos propios del dominio
    de la aplicación.
   Se encarga del acceso a los datos para
    realizar consultas, eliminaciones, inserciones,
    actualizaciones y almacenarlos en un medio
    persistente, como por ejemplo una base de
    datos, un archivo de texto, XML, etc.
Patrón MVC: Vista
   Representa la capa de presentación de los
    datos.
   Se encarga de mostrar la información al usuario,
    por lo tanto tiene que ver con el diseño y
    formateo de los datos para su presentación.
   Interfaz de usuario para la interacción con la
    aplicación.
   En la vista solo se deben de realizar
    operaciones simples, como condiciones,
    ciclos, etc.
Patrón MVC: Controlador
    Se encarga de controlar el flujo de la
     aplicación.
    Tiene la función de recibir y responder a
     los eventos (acciones del usuario),
     convirtiendo éstos en solicitudes de servicio.
    Además, tiene que redirigir o asignar la parte
     de lógica de negocios a cada petición.
    Cuenta con un mecanismo para guardar las
     correspondencias entre peticiones y
     respuestas que se les asignan.
    Cada acción del usuario causa que se inicie
     de nuevo un nuevo ciclo.
Patrón MVC: Funcionamiento (1)
   El procesamiento de los
    datos se lleva a cabo entre
    sus tres componentes.
   El controlador recibe una
    petición y decide quien la
    lleva a cabo en el modelo.
   Una vez terminadas las
    operaciones en el modelo,
    se transfiere el flujo al
    controlador, que devuelve
    los resultados a una vista
    asignada.
Patrón MVC: Funcionamiento (2)
Patrón MVC: Funcionamiento (3)




   El controlador tiene almacenado la
    relación entre las posibles peticiones y la
    lógica de negocio que les corresponden.
Patrón MVC: Ventajas
    Separación total entre las capas de
     presentación, lógica de negocio y acceso a
     datos.
    Esta separación es fundamental para el
     desarrollo de aplicaciones consistentes,
     reutilizables y más fácilmente
     mantenibles, resultando en un ahorro de
     tiempo.
    En Java se puede implementar el patrón
     MVC con la clase Observer pero de una
     manera sencilla, sin embargo con Struts se
     aplica en toda una aplicación Web
     convencional.
Frameworks
   Un framework es la extensión de un lenguaje,
    a través de una o más jerarquías de clases que
    implementan una funcionalidad y que pueden
    ser extendidas de manera opcional.
Apache Struts Framework
Un poco de historia…
   Originalmente fue creado por Craig R.
    McClanahan y donado al proyecto Jakarta de
    Apache Software Foundation en el año 2000.
   En Junio de 2001 se libera la primera versión, y
    desde entonces muchos desarrolladores han
    participado en la mejora continua de este
    framework.
   Actualmente se ha lanzado una nueva versión
    de este framework, la cual se denomina Struts
    2.
Apache Struts Framework (…)
   Es un framework de código abierto para
    desarrollar aplicaciones Web J2EE usando el
    patrón de diseño Modelo-Vista-Controlador.
   Usa y extiende la Java Servlet API para motivar
    a los desarrolladores a adoptar la arquitectura
    MVC.
   Simplifica notablemente la implementación
    de una aplicación siguiendo la arquitectura del
    patrón MVC.
Apache Struts Framework (…)
   El controlador ya se encuentra implementado en
    Struts, sin embargo y si es necesario es posible
    extenderlo o modificarlo.
   El flujo de la aplicación se controla desde un
    archivo XML (struts-config.xml).
   Proporciona la integración con el modelo, la
    lógica de negocio se implementa basándose en
    clases predefinidas por el framework y
    siguiendo el patrón Facade.
Apache Struts Framework (…)
   Facilita y soporta la construcción de la interfaz
    de la aplicación utilizando un conjunto de tags
    predefinidos.
   Lo que se busca es evitar el uso de scriptles,
    que son trozos de código Java entre “<%” y
    “%>”; para ganar mantenibilidad y
    rendimiento.
   Permite el desarrollo de sus componentes en
    paralelo o por personal especializado.
Apache Struts Framework (…)
   El framework provee tres componentes:
     Un  manejador de petición proporcionado por el
      desarrollador de la aplicación, que se usa para
      relacionarlo a una determinada URI.
     Un manejador de respuesta que se utiliza para
      transferir el control a otro recurso que se encargará
      de completar la respuesta.
     Una biblioteca de tags que ayuda a los
      desarrolladores a crear aplicaciones interactivas
      basadas en formularios.
Apache Struts Framework (…)
   Struts provee la infraestructura básica para la
    implementación del patrón MVC, permitiendo
    así que los desarrolladores puedan
    concentrarse en la lógica de negocios.
   El framework está compuesto por
    aproximadamente 300 clases e interfaces que
    están organizadas en alrededor de 12 paquetes
    de nivel superior.
Struts: Funcionamiento
   El navegador genera una solicitud que es
    atendida por el Controlador (un Servlet
    especializado).
   El Controlador también se encarga de analizar
    la solicitud, seguir la configuración que se le ha
    programado en su XML y llamar al Action
    correspondiente pasándole los parámetros
    enviados.
   El Action instanciará y/o utilizará los objetos de
    negocio para concretar la tarea.
Struts: Funcionamiento (…)
   Según el resultado que retorne el Action, el
    Controlador derivará la generación de interfaz a
    una o más JSPs, las cuales podrán consultar
    los objetos del Modelo para mostrar
    información de los mismos.
Struts: Funcionamiento (…)
Struts: Controlador
    La clase ActionServlet es el corazón del
     framework ya que es el controlador y se
     configura como servlet en el archivo
     web.xml
Struts: Controlador (…)
    Cada vez que un usuario hace una petición
     es manejada por Struts Action Servlet.
    Cuando el ActionServlet recibe la petición
     intercepta la URL y basado en el archivo de
     configuración struts-config.xml, dirige la
     petición al Action Class correspondiente.
    El Action Class es parte del controlador y se
     encarga de comunicarse con el modelo.
Struts: Controlador (…)
   Todas las peticiones atendidas por el
    framework siguen un patrón en su
    nomenclatura, por defecto *.do, pero éste se
    puede cambiar en el archivo web.xml.
Struts: struts-config.xml
   Es el archivo de configuración de Struts, aquí
    se mapean las acciones (peticiones).
   Sección <form-beans> contiene las definiciones
    de beans.
   Se usa un elemento <form-bean> por cada
    bean de formulario, tiene los siguientes
    atributos importantes:
       Name: Identificador único para referenciarlo en los
        mapeos de acciones.
Struts: struts-config.xml (…)
       Type: ruta completa de la clase Java del bean de
        formulario.
   Sección <action-mappings> contiene las
    definiciones de acciones, se usa un elemento
    <action> por cada acción, se definen los
    siguientes atributos:
       Path: nombre de la clase action en relación al
        contexto de la aplicación.
       Type: ruta completa de la clase Java de la clase
        Action.
Struts: struts-config.xml (…)
       Name: El nombre del <form-bean> para usar con
        esta action, si corresponde.
       Forward: ruta del archivo JSP a llamar.
   Dentro de cada <action> se pueden definir más
    de un forward, teniendo las siguientes
    propiedades:
       Name: nombre del forward que será utilizado al
        llamarlo desde la clase Action.
       Path: ruta de la página JSP.
Struts: Action Class
     Una clase Action de una aplicación Struts
      extiende a la clase
      org.apache.struts.action.Action.
     Una clase Action actúa como un envoltorio
      para la lógica de negocio y provee una
      interfaz al modelo.
     Es el mediador entre la vista y el Modelo, ya
      que transmite los datos desde la Vista hacia
      el proceso específico del modelo y retorna
      los resultados en sentido contrario.
Struts: Action Class (…)
    Una acción funciona como un adaptador
     entre una petición HTTP entrante y la lógica
     de negocio creando una instancia de la
     Action correspondiente y ejecutando el
     método execute().
    Por lo tanto es necesario que la subclase
     sobreescriba el método execute().
    No se debe añadir lógica de negocio en ella,
     mejor utilizar otra capa DAO.
Struts: Action Class (…)
    Método execute():

 public ActionForward execute(
     ActionMapping mapping,
     ActionForm form,
     javax.servlet.http.HttpServletRequest request,
     javax.servlet.http.HttpServletResponse response
 ) throws java.lang.Exception
Struts: Action Class (…)
   Sus parámetros son:
       mapping - El ActionMapping usado para
        seleccionar esta instancia
       form - ActionForm bean para esta petición, si existe
       request - La petición HTTP que se está procesando
       response - La respuesta HTTP que se está
        creando.
   Lanza una excepción si en la lógica de
    negocio ocurre también una excepción.
Struts: Action Form
   Una de las tareas que consume mucho trabajo
    es la interacción con formularios, ya sea para
    editar u obtener nueva información.
   Las comprobaciones, la gestión de errores, el
    volver a presentar el mismo form al usuario con
    los valores que puso y los mensajes de error
    están soportados por Struts con los Action
    Forms y JSP.
Struts: Action Form (…)
   Un ActionForm es un JavaBean que se
    extiende org.apache.struts.action.ActionForm.
   Implementa los métodos get y set para cada
    input de un formulario de una página, y los
    métodos validate y reset.
   Se llena automáticamente en el lado del
    servidor con los datos introducidos desde un
    formulario en el lado del cliente.
Struts: Modelo
   Comprende toda la lógica del negocio, son las
    clases Java que el desarrollador tiene que
    implementar.
   No existe un formato definido para la creación
    de estos componentes, el framework
    proporciona interfaces a bases de datos, etc.
   Se elige el modelo de acuerdo con los
    requerimientos del cliente.
Struts: Vista
   Los componentes de la Vista son JSP y se
    encargan de la presentación de la información al
    usuario y del ingreso de sus datos.
   Muestran los datos proporcionados por los
    componentes del modelo.
   Struts provee soporte para construir fácilmente
    la interfaz de usuario a través de la utilización
    de HTML Tag Library.
Struts: Vista (…)
 Pudiendo obtener aplicaciones multi-
  idioma, interacción con formularios y otras
  utilidades.
 Para usar los Struts HTML Tags es
  necesario incluir la siguiente línea en el
  JSP:
     <%@  taglib uri="http://struts.apache.org/tags-
     html" prefix="html" %>
Struts: Tag Library
    <html:html> Genera el tag <html>.
    <html:form> Genera <form>
    <html:button> Genera el tag <input type="button">.
    <html:submit> Genera <input type="submit"> para
     enviar los datos ingresados.
    <html:reset> Genera <input type="reset">
    <html:checkbox> Genera el tag <input
     type="checkbox">
    <html:hidden> Genera el tag <input type="hidden">.
    <html:img> Genera el tag <img>
Struts: Tag Library (…)
   <html:link> Genera un link html
   <html:password /> Genera el tag <input
    type=“password”>.
   <html:radio> Genera un radio button (<input
    type="radio">).
   <html:select multiple="true" property="selectBox">
    Genera la lista en el formulario, selectBox debe ser un
    array. Usar <html:options> para especificar las entradas.
   <html:text> Genera el tag <input type="text">
Struts: Tag Library (…)
   <html:textarea> Genera el tag <textarea>.
   <html:file /> Genera el tag <input type=“file”> para subir
    archivos.
   <html:base> Genera el tag <base>. Este tag debe ser
    usado dentro del tag <head>
   <html:errors> Genera el codigo html para mostrar los
    errors que pueden ocurrir en la página.
   <html:message key="thekey"/> Busca el valor
    correspondiente al key dado en el archivos de recursos
    y lo muestra.
Struts: Internacionalización
     Struts provee la facilidad de crear
      aplicaciones multilenguaje.
     Para crear una aplicación multilenguaje se
      debe crear un archivo de texto (ej:
      ApplicationResources.properties) en el
      directorio donde se encuentren las clases de
      la aplicación(ej. empresa/aplicacion) que
      contenga las claves y valores con el formato
      clave.subclave=texto de los textos que
      pertenezcan al idioma principal.
Struts: Internacionalización
    (…)
   Ejemplo:
    login.titulo = Ingreso al Sistema
    login.labelusuario = Usuario :
    login.labelpassword= Password :
   Para cada idioma alternativo se creará un
    archivo nuevo que se llame igual pero que
    termine en "_xx.properties" siendo xx el código
    ISO de idioma (ej:
    ApplicationResources_en.properties).
Struts: Internacionalización
    (…)
   En struts-config.xml se debe configurar el Tag
    /servlet/init-param/param-name application y
    ponerle como param-value la localización del
    archivo con el idioma principal.
Struts: Internacionalización
    (…)
   Ejemplo:
    <servlet>
    <servlet-name>action</servlet-name> ...
    <init-param>
    <param-name>application</param-name>
    <param-value>
    empresa.aplicacion.ApplicationResources
    </param-value>
    </init-param>
Struts: Internacionalización
    (…)
   Por ultimo se utiliza el Tag <bean:message
    key="clave.subclave"/> donde clave y subclave
    corresponden al texto por el que se
    reemplazará según el idioma del usuario.
   Ejemplo:
       <H1>
       <bean:message key="login.titulo"/>
       </H1>
Struts: Utilización I
   En el struts-config.xml
       <action path="/Welcome"
             forward="/pages/Welcome.jsp"/>
   En el JSP inicial
       <html:link page="/Welcome.do">Primera peticion al
        controlador</html:link>
   En Welcome.jsp
Struts: Utilización I (…)
    <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
     <%@ taglib uri="/tags/struts-html" prefix="html" %>
     <html:html locale="true">
     <head>
     <title><bean:message key="welcome.title"/></title>
     <html:base/>
     </head>
      <body bgcolor="white">
      <h3><bean:message key="welcome.heading"/></h3>
      <p><bean:message key="welcome.message"/></p>
     </body>
     </html:html>
Struts: Utilización II
    En el struts-config.xml
        <action path="/TestAction" type=
         “aplicacion.TestAction“ >
         <forward name="testAction" path=
         "/pages/TestAction.jsp"/>
         </action>
    En el JSP inicial
        <html:link page="/TestAction.do">Test the
         Action</html:link>
Struts: Utilización II (…)
     TestAction .java
         import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import org.apache.struts.action.Action;
          import org.apache.struts.action.ActionForm;
          import org.apache.struts.action.ActionForward;
          import org.apache.struts.action.ActionMapping;

          public class TestAction extends Action{
           public ActionForward execute(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception{
             return mapping.findForward("testAction"); } }
Struts: Utilización II (…)
   En TestAction.jsp
       <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
        <%@ taglib uri="/tags/struts-html" prefix="html" %>
        <html:html locale="true">
        <head>
          <title><bean:message key=“test.title"/></title>
        </head>
         <body bgcolor="white">
         <h3><bean:message key=“test.mensaje"/></h3>
        </body>
        </html:html>
Apache Struts Project
    La organización principal, a la cual
     pertenece este proyecto es la Apache
     Software Foundation.
    Apache Struts Project es la comunidad de
     desarrollo de código abierto que se encarga
     de crear y mantener el Apache Struts
     Framework.
    Está formado por un grupo diverso de
     voluntarios con sentido de colaboración.
Apache Struts Project (…)
   El proyecto es llamado "Struts“ porque la
    finalidad del framework es proporcionar algo
    como "bases invisibles" que soporten el
    desarrollo de aplicaciones profesionales.
   Struts nos proporciona el pegamento que une
    diversos elementos de la plataforma Java en un
    todo coherente.
Apache Struts Project (…)
   El objetivo del proyecto es aprovechar los
    estándares existentes mediante la producción
    de las piezas que faltan para ser capaces de
    crear aplicaciones de categoría empresarial
    que sean fáciles de mantener en el tiempo.
   Ofrece dos versiones principales del framework
    Struts.
Apache Struts Project (…)
   Struts 1 es reconocido como el framework más
    popular para aplicaciones Web en Java.
   Este framework, en su versión 1.x, es maduro,
    está bien documentado, y cuenta con un amplio
    soporte.
   Es la mejor alternativa para afrontar problemas
    comunes de desarrollo.
Apache Struts Project (…)
   Struts 2 fue originalmente conocido como
    WebWork 2; después de trabajar
    independientemente por varios años, las
    comunidades de Struts y WebWork unieron
    fuerzas para crear Struts 2.
   El framework 2.x es la mejor opción para
    afrontar elegantemente los problemas difíciles
    del desarrollo.
Apache Struts Project (…)
   Struts 2 es un elegante y extensible framework
    para la creación de la empresa de aplicaciones
    web en Java.
   El framework está diseñado para apoyar el ciclo
    completo de desarrollo, desde la construcción,
    el despliegue y a lo largo del periodo de
    mantenimiento de las aplicaciones.
Links de interés
   http://struts.apache.org/
   http://struts.apache.org/2.x/
   http://struts.apache.org/1.x/
   http://www.roseindia.net/struts/

Más contenido relacionado

La actualidad más candente

Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmiCuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmiJimmy Davila
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2Humano Terricola
 
Tipos de virtualizacion
Tipos de virtualizacionTipos de virtualizacion
Tipos de virtualizacionerikita1702
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedioGuillermo
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMicky Jerzy
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasJosé Antonio Sandoval Acosta
 
Detección y Corrección de errores
Detección y Corrección de erroresDetección y Corrección de errores
Detección y Corrección de erroresRonie Martínez
 
1.4 software numerico
1.4 software numerico1.4 software numerico
1.4 software numericomorenito9001
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteJosé Antonio Sandoval Acosta
 
puertos logicos puerto ftp
puertos logicos puerto ftppuertos logicos puerto ftp
puertos logicos puerto ftpCrhis
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoMarvin Zumbado
 
10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datosGusttavo Nipas
 
Ejercicios de test - desarrollo y programación
Ejercicios de test  -  desarrollo y programaciónEjercicios de test  -  desarrollo y programación
Ejercicios de test - desarrollo y programaciónoposicionestic
 

La actualidad más candente (20)

Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmiCuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2
 
Informe rup
Informe rupInforme rup
Informe rup
 
Tipos de virtualizacion
Tipos de virtualizacionTipos de virtualizacion
Tipos de virtualizacion
 
Sqlite
SqliteSqlite
Sqlite
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 
Detección y Corrección de errores
Detección y Corrección de erroresDetección y Corrección de errores
Detección y Corrección de errores
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Bases de datos orientadas a objetos
Bases de datos orientadas a objetosBases de datos orientadas a objetos
Bases de datos orientadas a objetos
 
1.4 software numerico
1.4 software numerico1.4 software numerico
1.4 software numerico
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
puertos logicos puerto ftp
puertos logicos puerto ftppuertos logicos puerto ftp
puertos logicos puerto ftp
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datos
 
Mapa conceptual de uml
Mapa conceptual de umlMapa conceptual de uml
Mapa conceptual de uml
 
Trabajo de html
Trabajo de htmlTrabajo de html
Trabajo de html
 
Ejercicios de test - desarrollo y programación
Ejercicios de test  -  desarrollo y programaciónEjercicios de test  -  desarrollo y programación
Ejercicios de test - desarrollo y programación
 
Herramientas visual basic
Herramientas visual basicHerramientas visual basic
Herramientas visual basic
 

Destacado

Manual Moto Cbr600 fm ft
Manual Moto Cbr600 fm ftManual Moto Cbr600 fm ft
Manual Moto Cbr600 fm ftThiago Huari
 
Manual Moto Cbr600 fv fw
Manual Moto Cbr600 fv fwManual Moto Cbr600 fv fw
Manual Moto Cbr600 fv fwThiago Huari
 
Lightning talk on MARC records for the Contemporary Composers Web Archive pre...
Lightning talk on MARC records for the Contemporary Composers Web Archive pre...Lightning talk on MARC records for the Contemporary Composers Web Archive pre...
Lightning talk on MARC records for the Contemporary Composers Web Archive pre...Anna Perricci
 
Manual Moto Cbr600 f2f42
Manual Moto Cbr600 f2f42Manual Moto Cbr600 f2f42
Manual Moto Cbr600 f2f42Thiago Huari
 
Location form green park
Location form   green park Location form   green park
Location form green park l-heathorn
 
Akademik,Prof.dr Mitar Lutovac
Akademik,Prof.dr Mitar LutovacAkademik,Prof.dr Mitar Lutovac
Akademik,Prof.dr Mitar Lutovacdr Mitar Lutovac
 

Destacado (9)

Perez 5
Perez 5Perez 5
Perez 5
 
Sebastian
SebastianSebastian
Sebastian
 
Manual Moto Cbr600 fm ft
Manual Moto Cbr600 fm ftManual Moto Cbr600 fm ft
Manual Moto Cbr600 fm ft
 
Manual Moto Cbr600 fv fw
Manual Moto Cbr600 fv fwManual Moto Cbr600 fv fw
Manual Moto Cbr600 fv fw
 
Lightning talk on MARC records for the Contemporary Composers Web Archive pre...
Lightning talk on MARC records for the Contemporary Composers Web Archive pre...Lightning talk on MARC records for the Contemporary Composers Web Archive pre...
Lightning talk on MARC records for the Contemporary Composers Web Archive pre...
 
My presentation
My presentationMy presentation
My presentation
 
Manual Moto Cbr600 f2f42
Manual Moto Cbr600 f2f42Manual Moto Cbr600 f2f42
Manual Moto Cbr600 f2f42
 
Location form green park
Location form   green park Location form   green park
Location form green park
 
Akademik,Prof.dr Mitar Lutovac
Akademik,Prof.dr Mitar LutovacAkademik,Prof.dr Mitar Lutovac
Akademik,Prof.dr Mitar Lutovac
 

Similar a Patron mvc struts (20)

Struts en Java
Struts en JavaStruts en Java
Struts en Java
 
Documentacion struts2
Documentacion struts2Documentacion struts2
Documentacion struts2
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
 
Documentacion struts2 laura.palma
Documentacion struts2 laura.palmaDocumentacion struts2 laura.palma
Documentacion struts2 laura.palma
 
Documentacion struts 2
Documentacion struts 2Documentacion struts 2
Documentacion struts 2
 
Documentacionstruts2 luiggi
Documentacionstruts2 luiggiDocumentacionstruts2 luiggi
Documentacionstruts2 luiggi
 
Framework
FrameworkFramework
Framework
 
Aplicaciones en capas1
Aplicaciones en capas1Aplicaciones en capas1
Aplicaciones en capas1
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
Implementacion de un portal web para la automatización del proceso de consult...
Implementacion de un portal web para la automatización del proceso de consult...Implementacion de un portal web para la automatización del proceso de consult...
Implementacion de un portal web para la automatización del proceso de consult...
 
Frameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESFrameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITES
 
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
 
Modelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_DiseñowebModelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_Diseñoweb
 
Asp
AspAsp
Asp
 
S8 arely medina_power_point
S8 arely medina_power_pointS8 arely medina_power_point
S8 arely medina_power_point
 
MVC
MVCMVC
MVC
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
Framework
FrameworkFramework
Framework
 

Último

Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Baker Publishing Company
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Flores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaFlores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaJuan Carlos Fonseca Mata
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
CULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirCULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirPaddySydney1
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 

Último (20)

Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Flores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - BotánicaFlores Nacionales de América Latina - Botánica
Flores Nacionales de América Latina - Botánica
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
CULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartirCULTURA NAZCA, presentación en aula para compartir
CULTURA NAZCA, presentación en aula para compartir
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 

Patron mvc struts

  • 2. Agenda  Introducción  Conceptos fundamentales  Apache Struts Framework  Características  Controlador  Vista  Modelo  Utilización  Apache Struts Project
  • 3. Introducción (…)  Las aplicaciones Web son diferentes a los sitios Web convencionales porque éstas son capaces de crear una respuesta dinámica.  Muchos sitios Web ofrecen sólo páginas estáticas, en cambio una aplicación Web es capaz de interactuar con bases de datos y lógica de negocios con la finalidad de personalizar la respuesta a enviar.
  • 4. Introducción (…)  Ventajas de los servlet frente a los CGI:  Más rápidos  Más potentes  Portables  Extensibles  Desventajas  Escribir líneas infinitas println() para enviar código HTML al navegador  Solución JavaServerPage
  • 5. Introducción (…)  JSP permite escritura de código Java dentro de ellos consiguiendo todas las ventajas tanto de los servlets como del código HTML  Sigue habiendo problemas propios de las aplicaciones web: El control de flujo
  • 6. Introducción (…)  Las aplicaciones Web en general tienen tres aspectos a considerar en su desarrollo:  El código de acceso, inserción, consulta, actualización y/o eliminación de los datos.  El código del diseño de las páginas a mostrar.  El código que controla el flujo de las páginas de la aplicación.  Con la práctica nos damos cuenta que si una aplicación Web grande tiene estos aspectos muy mezclados se vuelve difícil de mantener.
  • 7. Introducción (…)  Una forma de separar estos aspectos es usando la arquitectura MVC: Modelo-Vista-Controlador, donde:  El modelo representa a la lógica de negocios (manipulación de datos).  La vista representa la presentación de los datos (diseño de páginas).  El controlador representa el código de navegación de la aplicación (control de flujo).
  • 8. Patrones de Diseño  Los patrones de diseño son soluciones efectivas de problemas comunes en el diseño de software.  La efectividad de un patrón ya ha sido comprobada.  Un patrón es reusable.  Los patrones facilitan el aprendizaje de los programadores inexpertos.
  • 9. Patrones de Diseño (…)  Los patrones de diseño se pueden clasificar, según su propósito, en:  Patrones creacionales: abstraen el proceso de instanciación y ocultan los detalles de cómo los objetos son creados o inicializados.  Patrones estructurales: describen como las clases y objetos pueden ser combinados para formar grandes estructuras y proporcionar nuevas funcionalidades.
  • 10. Patrones de Diseño (…)  Patrones de comportamiento: tratan de cómo definir la comunicación e interacción entre los objetos de un sistema con la finalidad de reducir el acoplamiento entre éstos.
  • 11. Patrón MVC  El patrón de diseño Modelo-Vista- Controlador fue aportado originariamente por el lenguaje de programación SmallTalk.  Consiste en dividir una aplicación en tres componentes: Modelo, Vista y Controlador.  Se basa en la separación de responsabilidades ya que cada una de las partes se encarga de un aspecto específico y no interfiere con el de las otras.
  • 12. Patrón MVC: Modelo  Representa las capas de lógica de negocios y persistencia de datos de la aplicación.  Está formada por todos los objetos de negocio que soportan los procesos propios del dominio de la aplicación.  Se encarga del acceso a los datos para realizar consultas, eliminaciones, inserciones, actualizaciones y almacenarlos en un medio persistente, como por ejemplo una base de datos, un archivo de texto, XML, etc.
  • 13. Patrón MVC: Vista  Representa la capa de presentación de los datos.  Se encarga de mostrar la información al usuario, por lo tanto tiene que ver con el diseño y formateo de los datos para su presentación.  Interfaz de usuario para la interacción con la aplicación.  En la vista solo se deben de realizar operaciones simples, como condiciones, ciclos, etc.
  • 14. Patrón MVC: Controlador  Se encarga de controlar el flujo de la aplicación.  Tiene la función de recibir y responder a los eventos (acciones del usuario), convirtiendo éstos en solicitudes de servicio.  Además, tiene que redirigir o asignar la parte de lógica de negocios a cada petición.  Cuenta con un mecanismo para guardar las correspondencias entre peticiones y respuestas que se les asignan.  Cada acción del usuario causa que se inicie de nuevo un nuevo ciclo.
  • 15. Patrón MVC: Funcionamiento (1)  El procesamiento de los datos se lleva a cabo entre sus tres componentes.  El controlador recibe una petición y decide quien la lleva a cabo en el modelo.  Una vez terminadas las operaciones en el modelo, se transfiere el flujo al controlador, que devuelve los resultados a una vista asignada.
  • 17. Patrón MVC: Funcionamiento (3)  El controlador tiene almacenado la relación entre las posibles peticiones y la lógica de negocio que les corresponden.
  • 18. Patrón MVC: Ventajas  Separación total entre las capas de presentación, lógica de negocio y acceso a datos.  Esta separación es fundamental para el desarrollo de aplicaciones consistentes, reutilizables y más fácilmente mantenibles, resultando en un ahorro de tiempo.  En Java se puede implementar el patrón MVC con la clase Observer pero de una manera sencilla, sin embargo con Struts se aplica en toda una aplicación Web convencional.
  • 19. Frameworks  Un framework es la extensión de un lenguaje, a través de una o más jerarquías de clases que implementan una funcionalidad y que pueden ser extendidas de manera opcional.
  • 20. Apache Struts Framework Un poco de historia…  Originalmente fue creado por Craig R. McClanahan y donado al proyecto Jakarta de Apache Software Foundation en el año 2000.  En Junio de 2001 se libera la primera versión, y desde entonces muchos desarrolladores han participado en la mejora continua de este framework.  Actualmente se ha lanzado una nueva versión de este framework, la cual se denomina Struts 2.
  • 21. Apache Struts Framework (…)  Es un framework de código abierto para desarrollar aplicaciones Web J2EE usando el patrón de diseño Modelo-Vista-Controlador.  Usa y extiende la Java Servlet API para motivar a los desarrolladores a adoptar la arquitectura MVC.  Simplifica notablemente la implementación de una aplicación siguiendo la arquitectura del patrón MVC.
  • 22. Apache Struts Framework (…)  El controlador ya se encuentra implementado en Struts, sin embargo y si es necesario es posible extenderlo o modificarlo.  El flujo de la aplicación se controla desde un archivo XML (struts-config.xml).  Proporciona la integración con el modelo, la lógica de negocio se implementa basándose en clases predefinidas por el framework y siguiendo el patrón Facade.
  • 23. Apache Struts Framework (…)  Facilita y soporta la construcción de la interfaz de la aplicación utilizando un conjunto de tags predefinidos.  Lo que se busca es evitar el uso de scriptles, que son trozos de código Java entre “<%” y “%>”; para ganar mantenibilidad y rendimiento.  Permite el desarrollo de sus componentes en paralelo o por personal especializado.
  • 24. Apache Struts Framework (…)  El framework provee tres componentes:  Un manejador de petición proporcionado por el desarrollador de la aplicación, que se usa para relacionarlo a una determinada URI.  Un manejador de respuesta que se utiliza para transferir el control a otro recurso que se encargará de completar la respuesta.  Una biblioteca de tags que ayuda a los desarrolladores a crear aplicaciones interactivas basadas en formularios.
  • 25. Apache Struts Framework (…)  Struts provee la infraestructura básica para la implementación del patrón MVC, permitiendo así que los desarrolladores puedan concentrarse en la lógica de negocios.  El framework está compuesto por aproximadamente 300 clases e interfaces que están organizadas en alrededor de 12 paquetes de nivel superior.
  • 26. Struts: Funcionamiento  El navegador genera una solicitud que es atendida por el Controlador (un Servlet especializado).  El Controlador también se encarga de analizar la solicitud, seguir la configuración que se le ha programado en su XML y llamar al Action correspondiente pasándole los parámetros enviados.  El Action instanciará y/o utilizará los objetos de negocio para concretar la tarea.
  • 27. Struts: Funcionamiento (…)  Según el resultado que retorne el Action, el Controlador derivará la generación de interfaz a una o más JSPs, las cuales podrán consultar los objetos del Modelo para mostrar información de los mismos.
  • 29. Struts: Controlador  La clase ActionServlet es el corazón del framework ya que es el controlador y se configura como servlet en el archivo web.xml
  • 30. Struts: Controlador (…)  Cada vez que un usuario hace una petición es manejada por Struts Action Servlet.  Cuando el ActionServlet recibe la petición intercepta la URL y basado en el archivo de configuración struts-config.xml, dirige la petición al Action Class correspondiente.  El Action Class es parte del controlador y se encarga de comunicarse con el modelo.
  • 31. Struts: Controlador (…)  Todas las peticiones atendidas por el framework siguen un patrón en su nomenclatura, por defecto *.do, pero éste se puede cambiar en el archivo web.xml.
  • 32. Struts: struts-config.xml  Es el archivo de configuración de Struts, aquí se mapean las acciones (peticiones).  Sección <form-beans> contiene las definiciones de beans.  Se usa un elemento <form-bean> por cada bean de formulario, tiene los siguientes atributos importantes:  Name: Identificador único para referenciarlo en los mapeos de acciones.
  • 33. Struts: struts-config.xml (…)  Type: ruta completa de la clase Java del bean de formulario.  Sección <action-mappings> contiene las definiciones de acciones, se usa un elemento <action> por cada acción, se definen los siguientes atributos:  Path: nombre de la clase action en relación al contexto de la aplicación.  Type: ruta completa de la clase Java de la clase Action.
  • 34. Struts: struts-config.xml (…)  Name: El nombre del <form-bean> para usar con esta action, si corresponde.  Forward: ruta del archivo JSP a llamar.  Dentro de cada <action> se pueden definir más de un forward, teniendo las siguientes propiedades:  Name: nombre del forward que será utilizado al llamarlo desde la clase Action.  Path: ruta de la página JSP.
  • 35. Struts: Action Class  Una clase Action de una aplicación Struts extiende a la clase org.apache.struts.action.Action.  Una clase Action actúa como un envoltorio para la lógica de negocio y provee una interfaz al modelo.  Es el mediador entre la vista y el Modelo, ya que transmite los datos desde la Vista hacia el proceso específico del modelo y retorna los resultados en sentido contrario.
  • 36. Struts: Action Class (…)  Una acción funciona como un adaptador entre una petición HTTP entrante y la lógica de negocio creando una instancia de la Action correspondiente y ejecutando el método execute().  Por lo tanto es necesario que la subclase sobreescriba el método execute().  No se debe añadir lógica de negocio en ella, mejor utilizar otra capa DAO.
  • 37. Struts: Action Class (…)  Método execute(): public ActionForward execute( ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response ) throws java.lang.Exception
  • 38. Struts: Action Class (…)  Sus parámetros son:  mapping - El ActionMapping usado para seleccionar esta instancia  form - ActionForm bean para esta petición, si existe  request - La petición HTTP que se está procesando  response - La respuesta HTTP que se está creando.  Lanza una excepción si en la lógica de negocio ocurre también una excepción.
  • 39. Struts: Action Form  Una de las tareas que consume mucho trabajo es la interacción con formularios, ya sea para editar u obtener nueva información.  Las comprobaciones, la gestión de errores, el volver a presentar el mismo form al usuario con los valores que puso y los mensajes de error están soportados por Struts con los Action Forms y JSP.
  • 40. Struts: Action Form (…)  Un ActionForm es un JavaBean que se extiende org.apache.struts.action.ActionForm.  Implementa los métodos get y set para cada input de un formulario de una página, y los métodos validate y reset.  Se llena automáticamente en el lado del servidor con los datos introducidos desde un formulario en el lado del cliente.
  • 41. Struts: Modelo  Comprende toda la lógica del negocio, son las clases Java que el desarrollador tiene que implementar.  No existe un formato definido para la creación de estos componentes, el framework proporciona interfaces a bases de datos, etc.  Se elige el modelo de acuerdo con los requerimientos del cliente.
  • 42. Struts: Vista  Los componentes de la Vista son JSP y se encargan de la presentación de la información al usuario y del ingreso de sus datos.  Muestran los datos proporcionados por los componentes del modelo.  Struts provee soporte para construir fácilmente la interfaz de usuario a través de la utilización de HTML Tag Library.
  • 43. Struts: Vista (…)  Pudiendo obtener aplicaciones multi- idioma, interacción con formularios y otras utilidades.  Para usar los Struts HTML Tags es necesario incluir la siguiente línea en el JSP:  <%@ taglib uri="http://struts.apache.org/tags- html" prefix="html" %>
  • 44. Struts: Tag Library  <html:html> Genera el tag <html>.  <html:form> Genera <form>  <html:button> Genera el tag <input type="button">.  <html:submit> Genera <input type="submit"> para enviar los datos ingresados.  <html:reset> Genera <input type="reset">  <html:checkbox> Genera el tag <input type="checkbox">  <html:hidden> Genera el tag <input type="hidden">.  <html:img> Genera el tag <img>
  • 45. Struts: Tag Library (…)  <html:link> Genera un link html  <html:password /> Genera el tag <input type=“password”>.  <html:radio> Genera un radio button (<input type="radio">).  <html:select multiple="true" property="selectBox"> Genera la lista en el formulario, selectBox debe ser un array. Usar <html:options> para especificar las entradas.  <html:text> Genera el tag <input type="text">
  • 46. Struts: Tag Library (…)  <html:textarea> Genera el tag <textarea>.  <html:file /> Genera el tag <input type=“file”> para subir archivos.  <html:base> Genera el tag <base>. Este tag debe ser usado dentro del tag <head>  <html:errors> Genera el codigo html para mostrar los errors que pueden ocurrir en la página.  <html:message key="thekey"/> Busca el valor correspondiente al key dado en el archivos de recursos y lo muestra.
  • 47. Struts: Internacionalización  Struts provee la facilidad de crear aplicaciones multilenguaje.  Para crear una aplicación multilenguaje se debe crear un archivo de texto (ej: ApplicationResources.properties) en el directorio donde se encuentren las clases de la aplicación(ej. empresa/aplicacion) que contenga las claves y valores con el formato clave.subclave=texto de los textos que pertenezcan al idioma principal.
  • 48. Struts: Internacionalización (…)  Ejemplo: login.titulo = Ingreso al Sistema login.labelusuario = Usuario : login.labelpassword= Password :  Para cada idioma alternativo se creará un archivo nuevo que se llame igual pero que termine en "_xx.properties" siendo xx el código ISO de idioma (ej: ApplicationResources_en.properties).
  • 49. Struts: Internacionalización (…)  En struts-config.xml se debe configurar el Tag /servlet/init-param/param-name application y ponerle como param-value la localización del archivo con el idioma principal.
  • 50. Struts: Internacionalización (…)  Ejemplo: <servlet> <servlet-name>action</servlet-name> ... <init-param> <param-name>application</param-name> <param-value> empresa.aplicacion.ApplicationResources </param-value> </init-param>
  • 51. Struts: Internacionalización (…)  Por ultimo se utiliza el Tag <bean:message key="clave.subclave"/> donde clave y subclave corresponden al texto por el que se reemplazará según el idioma del usuario.  Ejemplo:  <H1>  <bean:message key="login.titulo"/>  </H1>
  • 52. Struts: Utilización I  En el struts-config.xml  <action path="/Welcome" forward="/pages/Welcome.jsp"/>  En el JSP inicial  <html:link page="/Welcome.do">Primera peticion al controlador</html:link>  En Welcome.jsp
  • 53. Struts: Utilización I (…)  <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <html:html locale="true"> <head> <title><bean:message key="welcome.title"/></title> <html:base/> </head> <body bgcolor="white"> <h3><bean:message key="welcome.heading"/></h3> <p><bean:message key="welcome.message"/></p> </body> </html:html>
  • 54. Struts: Utilización II  En el struts-config.xml  <action path="/TestAction" type= “aplicacion.TestAction“ > <forward name="testAction" path= "/pages/TestAction.jsp"/> </action>  En el JSP inicial  <html:link page="/TestAction.do">Test the Action</html:link>
  • 55. Struts: Utilización II (…)  TestAction .java  import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class TestAction extends Action{ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{ return mapping.findForward("testAction"); } }
  • 56. Struts: Utilización II (…)  En TestAction.jsp  <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <html:html locale="true"> <head> <title><bean:message key=“test.title"/></title> </head> <body bgcolor="white"> <h3><bean:message key=“test.mensaje"/></h3> </body> </html:html>
  • 57. Apache Struts Project  La organización principal, a la cual pertenece este proyecto es la Apache Software Foundation.  Apache Struts Project es la comunidad de desarrollo de código abierto que se encarga de crear y mantener el Apache Struts Framework.  Está formado por un grupo diverso de voluntarios con sentido de colaboración.
  • 58. Apache Struts Project (…)  El proyecto es llamado "Struts“ porque la finalidad del framework es proporcionar algo como "bases invisibles" que soporten el desarrollo de aplicaciones profesionales.  Struts nos proporciona el pegamento que une diversos elementos de la plataforma Java en un todo coherente.
  • 59. Apache Struts Project (…)  El objetivo del proyecto es aprovechar los estándares existentes mediante la producción de las piezas que faltan para ser capaces de crear aplicaciones de categoría empresarial que sean fáciles de mantener en el tiempo.  Ofrece dos versiones principales del framework Struts.
  • 60. Apache Struts Project (…)  Struts 1 es reconocido como el framework más popular para aplicaciones Web en Java.  Este framework, en su versión 1.x, es maduro, está bien documentado, y cuenta con un amplio soporte.  Es la mejor alternativa para afrontar problemas comunes de desarrollo.
  • 61. Apache Struts Project (…)  Struts 2 fue originalmente conocido como WebWork 2; después de trabajar independientemente por varios años, las comunidades de Struts y WebWork unieron fuerzas para crear Struts 2.  El framework 2.x es la mejor opción para afrontar elegantemente los problemas difíciles del desarrollo.
  • 62. Apache Struts Project (…)  Struts 2 es un elegante y extensible framework para la creación de la empresa de aplicaciones web en Java.  El framework está diseñado para apoyar el ciclo completo de desarrollo, desde la construcción, el despliegue y a lo largo del periodo de mantenimiento de las aplicaciones.
  • 63. Links de interés  http://struts.apache.org/  http://struts.apache.org/2.x/  http://struts.apache.org/1.x/  http://www.roseindia.net/struts/