SlideShare une entreprise Scribd logo
1  sur  63
Télécharger pour lire hors ligne
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/

Contenu connexe

Tendances

SQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en MemoriaSQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en MemoriaEduardo Castro
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Brasil
 
Base de datos propiedades acid
Base de datos propiedades acidBase de datos propiedades acid
Base de datos propiedades acidJefer Lee Parra
 
Azure Overview Arc
Azure Overview ArcAzure Overview Arc
Azure Overview Arcrajramab
 
Introduction to Azure SQL DB
Introduction to Azure SQL DBIntroduction to Azure SQL DB
Introduction to Azure SQL DBChristopher Foot
 
Arquitectura de las bases de datos
Arquitectura de las bases de datosArquitectura de las bases de datos
Arquitectura de las bases de datosMaria Garcia
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APPDouglas Alonso
 
High Level Solution Document for VDI Project
High Level Solution Document for VDI ProjectHigh Level Solution Document for VDI Project
High Level Solution Document for VDI ProjectShahab Al Yamin Chawdhury
 
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年9月22日)
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年9月22日)はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年9月22日)
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年9月22日)オラクルエンジニア通信
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
01_DP-300T00A-Intro.pptx
01_DP-300T00A-Intro.pptx01_DP-300T00A-Intro.pptx
01_DP-300T00A-Intro.pptxKareemBullard1
 
Microservicios y contenedores Docker
Microservicios y contenedores DockerMicroservicios y contenedores Docker
Microservicios y contenedores DockerPlain Concepts
 

Tendances (20)

SQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en MemoriaSQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en Memoria
 
MySQL Cluster - visão geral
MySQL Cluster - visão geralMySQL Cluster - visão geral
MySQL Cluster - visão geral
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
Base de datos propiedades acid
Base de datos propiedades acidBase de datos propiedades acid
Base de datos propiedades acid
 
Azure Overview Arc
Azure Overview ArcAzure Overview Arc
Azure Overview Arc
 
Introduction to Azure SQL DB
Introduction to Azure SQL DBIntroduction to Azure SQL DB
Introduction to Azure SQL DB
 
Oracle Database 12c R1 主要新機能のご紹介
Oracle Database 12c R1 主要新機能のご紹介Oracle Database 12c R1 主要新機能のご紹介
Oracle Database 12c R1 主要新機能のご紹介
 
Arquitectura de las bases de datos
Arquitectura de las bases de datosArquitectura de las bases de datos
Arquitectura de las bases de datos
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APP
 
Oracle Enterprise Manager
Oracle Enterprise ManagerOracle Enterprise Manager
Oracle Enterprise Manager
 
High Level Solution Document for VDI Project
High Level Solution Document for VDI ProjectHigh Level Solution Document for VDI Project
High Level Solution Document for VDI Project
 
My sql apresentação
My sql apresentaçãoMy sql apresentação
My sql apresentação
 
04 -bases_de_datos_-_arquitectura_de_tres_niveles
04  -bases_de_datos_-_arquitectura_de_tres_niveles04  -bases_de_datos_-_arquitectura_de_tres_niveles
04 -bases_de_datos_-_arquitectura_de_tres_niveles
 
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年9月22日)
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年9月22日)はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年9月22日)
はじめてのOracle Cloud Infrastructure (Oracle Cloudウェビナーシリーズ: 2021年9月22日)
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Presentacion azure
Presentacion azurePresentacion azure
Presentacion azure
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
01_DP-300T00A-Intro.pptx
01_DP-300T00A-Intro.pptx01_DP-300T00A-Intro.pptx
01_DP-300T00A-Intro.pptx
 
Microservicios y contenedores Docker
Microservicios y contenedores DockerMicroservicios y contenedores Docker
Microservicios y contenedores Docker
 

En vedette

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
 

En vedette (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
 

Similaire à Patron mvc struts

Similaire à 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
 

Dernier

FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVGiustinoAdesso1
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosJonathanCovena1
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxdkmeza
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 

Dernier (20)

FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.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/