SlideShare una empresa de Scribd logo
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

PPS
Presentacion eclipse - grupo 6
PPT
How to Use Visio for Project Management
DOCX
Guia para desarrollo de software seguro
PPTX
Paradigma de Programación Orientado a Objetos
PDF
Mémento CSS
PPT
Graphical User Interface in JAVA
PPT
Presentacion eclipse - grupo 6
How to Use Visio for Project Management
Guia para desarrollo de software seguro
Paradigma de Programación Orientado a Objetos
Mémento CSS
Graphical User Interface in JAVA

La actualidad más candente (20)

PPSX
Patrones de diseño(presentación 7)
PPTX
Historias de usuario
PPT
Resource Bundle
PPT
Création de Vues | SQL Oracle
PPTX
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
PPS
Jsp chapter 1
PDF
PHP Basic & Variables
PPTX
Collections in-csharp
PDF
JavaScript - Chapter 15 - Debugging Techniques
PPTX
Programación modular
PDF
Applications Android - cours 12 : Persistance de données SQLite
PPT
ASP.NET 10 - Data Controls
PPTX
Presentacion de Visual Basic
PPTX
Technologies sur angular.pptx
PPTX
Introducción a HTML5 y CSS3
PPTX
Data annotation validation (ASP.net)
PDF
NgRx 101 Connect.Tech 2019
PDF
Unit 06: The Web Application Extension for UML
PDF
Applications Android - cours 8 : Gestion des évènements
PDF
Principios diseño del software
Patrones de diseño(presentación 7)
Historias de usuario
Resource Bundle
Création de Vues | SQL Oracle
Transformation de carrés en cercles avec Atlas Transformation Language(ATL)
Jsp chapter 1
PHP Basic & Variables
Collections in-csharp
JavaScript - Chapter 15 - Debugging Techniques
Programación modular
Applications Android - cours 12 : Persistance de données SQLite
ASP.NET 10 - Data Controls
Presentacion de Visual Basic
Technologies sur angular.pptx
Introducción a HTML5 y CSS3
Data annotation validation (ASP.net)
NgRx 101 Connect.Tech 2019
Unit 06: The Web Application Extension for UML
Applications Android - cours 8 : Gestion des évènements
Principios diseño del software
Publicidad

Destacado (9)

PDF
Perez 5
PPTX
Sebastian
PDF
Manual Moto Cbr600 fm ft
PDF
Manual Moto Cbr600 fv fw
PDF
Lightning talk on MARC records for the Contemporary Composers Web Archive pre...
PDF
My presentation
PDF
Manual Moto Cbr600 f2f42
DOCX
Location form green park
PDF
Akademik,Prof.dr Mitar Lutovac
Perez 5
Sebastian
Manual Moto Cbr600 fm ft
Manual Moto Cbr600 fv fw
Lightning talk on MARC records for the Contemporary Composers Web Archive pre...
My presentation
Manual Moto Cbr600 f2f42
Location form green park
Akademik,Prof.dr Mitar Lutovac
Publicidad

Similar a Patron mvc struts (20)

PPT
Struts en Java
PDF
Framework
PPT
FMK Capa de Presentacion
PDF
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
DOCX
Documentacion struts2
PPT
01 introducción
PDF
Frameworks MVC para desarrollo de UITES
DOCX
Documentacion struts2 laura.palma
PDF
Wholesite
PPT
Curso Fundeweb2 para java desde cero a experto.ppt
DOCX
Documentacion struts 2
PPT
Introduccion a la estructura de Fundeweb
DOCX
Documentacionstruts2 luiggi
PPTX
Framework
PPTX
Framework
PPTX
Framework
PPTX
Framework by Marcos Acosta
Struts en Java
Framework
FMK Capa de Presentacion
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Documentacion struts2
01 introducción
Frameworks MVC para desarrollo de UITES
Documentacion struts2 laura.palma
Wholesite
Curso Fundeweb2 para java desde cero a experto.ppt
Documentacion struts 2
Introduccion a la estructura de Fundeweb
Documentacionstruts2 luiggi
Framework
Framework
Framework
Framework by Marcos Acosta

Último (20)

PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
biología es un libro sobre casi todo el tema de biología
PPT
Cosacos y hombres del Este en el Heer.ppt
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
DOCX
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
Escuelas Desarmando una mirada subjetiva a la educación
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
biología es un libro sobre casi todo el tema de biología
Cosacos y hombres del Este en el Heer.ppt
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
ciencias-1.pdf libro cuarto basico niños
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
Híper Mega Repaso Histológico Bloque 3.pdf
Escuela Sabática 6. A través del Mar Rojo.pdf
Crear o Morir - Andres Oppenheimer Ccesa007.pdf

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/