Java Avanzado Emilio Avilés Ávila http://www.techmi.es
Workshop  (25 horas) Workshop Java avanzado para empresas y profesionales
Temario <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlets </li></ul><ul><li>JSP </li></ul><ul><li>Javabean...
Tema 6 Struts
Objetivos <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlets </li></ul><ul><li>JSP </li></ul><ul><li>Javabe...
6 – Struts <ul><li>Un poco de contexto </li></ul>
6 – Struts <ul><li>Escenario típico </li></ul><ul><ul><li>Construir un JSP para hacer más sencillo el desarrollo y manteni...
6 – Struts <ul><li>Formas de gestionar una  request… </li></ul><ul><ul><li>Sólo con servlets, funciona bien cuando: </li><...
6 – Struts <ul><li>MVC: Model-View-Controler </li></ul><ul><ul><li>Separamos la vista (JSP) del modelo (Beans) comunicándo...
6 – Struts <ul><li>MVC: Model – View – Controller </li></ul><ul><ul><li>Los frameworks (Struts, JSF) ayudan pero a veces n...
6 – Struts <ul><li>RequestDispatcher (I) </li></ul><ul><ul><li>Definir los beans que representarán los datos </li></ul></u...
6 – Struts <ul><li>RequestDispatcher (II) </li></ul><ul><ul><li>Forward de la  request  a la página JSP </li></ul></ul><ul...
6 – Struts <ul><li>Ejemplo RequestDispatcher </li></ul><ul><ul><li>Servlet  RequestDispatcher </li></ul></ul>
6 – Struts <ul><li>Ejemplo MVC: Saldo Banco on-line </li></ul><ul><ul><li>Bean </li></ul></ul><ul><ul><ul><li>BankCustomer...
6 – Struts <ul><li>Resultado Ejemplo </li></ul>
6 – Struts <ul><li>JSTL: JSP Standard Tag Library (I) </li></ul><ul><ul><li>Un Tag de JSP consiste en un Tag con formato <...
6 – Struts <ul><li>JSTL: JSP Standard Tag Library (II) </li></ul><ul><ul><li>Los  tags  incluidos en struts están document...
6 – Struts <ul><li>¿Qué es  Apache Struts? </li></ul><ul><ul><li>Framework MVC </li></ul></ul><ul><ul><ul><li>Permite desa...
6 – Struts <ul><li>Ventajas Struts (I) </li></ul><ul><ul><li>Configuración centralizada en fichero </li></ul></ul><ul><ul>...
6 – Struts <ul><li>Ventajas Struts (II) </li></ul><ul><ul><li>HTML tags </li></ul></ul><ul><ul><ul><li>Proporciona tags JS...
6 – Struts <ul><li>Desventajas Struts </li></ul><ul><ul><li>Mayor curva de aprendizaje </li></ul></ul><ul><ul><ul><li>Adem...
6 – Struts <ul><li>Hola mundo Struts </li></ul><ul><ul><li>Con los IDE es muy fácil:  </li></ul></ul><ul><ul><ul><li>Netbe...
6 – Struts <ul><li>Estructura de carpetas creada </li></ul>
6 – Struts <ul><li>Añadir Struts a una aplicación existente </li></ul><ul><ul><li>Copiar ficheros Struts a nuestra aplicac...
6 – Struts <ul><li>Algunas Web En Struts </li></ul>
6 – Struts <ul><li>¿Cómo funciona struts en la Web? MVC </li></ul><ul><ul><li>El navegador genera un solicitud atendida po...
6 – Struts <ul><li>Modelo:  Action Bean  </li></ul><ul><ul><li>Definir una clase (en el paquete src/ejemplo/..) </li></ul>...
6 – Struts <ul><li>Modelo:  Action Bean  - Ejemplo </li></ul><ul><ul><li>Obtener los valores necesarios del  ActionForm </...
6 – Struts <ul><li>Modelo:  System State Beans </li></ul><ul><ul><li>Objetos de negocio que representan el estado actual d...
6 – Struts <ul><li>Modelo:  Business Logic Beans </li></ul><ul><ul><li>Implementan la lógica de negocio. </li></ul></ul><u...
6 – Struts <ul><li>Modelo:  Accediendo a la BDD </li></ul><ul><ul><li>Se pueden definir datasource </li></ul></ul><ul><ul>...
6 – Struts <ul><li>Vista:  Internationalitation (i18n) </li></ul><ul><ul><li>Soporte para construir aplicaciones multidiom...
6 – Struts <ul><li>Vista:  form </li></ul><ul><ul><li>Struts facilita la gestión con los  form </li></ul></ul><ul><ul><ul>...
6 – Struts <ul><li>Vista:  form  </li></ul><ul><ul><li>Pasos para crear un  form </li></ul></ul><ul><ul><ul><li>Crear el  ...
6 – Struts <ul><li>Controler </li></ul><ul><ul><li>Comprende la funcionalidad desde que el usuario genera un evento (click...
6 – Struts <ul><li>Controler –  action-mapping form Bean </li></ul><ul><ul><li>¿Qué pasa si la acción asociada es un formu...
6 – Struts <ul><li>ActionForm Beans (I) </li></ul><ul><ul><li>Son clases que extiende de  ActionForm </li></ul></ul><ul><u...
6 – Struts <ul><li>ActionForm Beans (II) </li></ul><ul><ul><li>1. Cuando un usuario completa un formulario y lo envía </li...
6 – Struts <ul><li>ActionForm  - Ejemplo </li></ul>
6 – Struts <ul><li>ActionForms  – Principios </li></ul><ul><ul><li>No debe tener nada que corresponda a la lógica de negoc...
6 – Struts <ul><li>Struts de manera manual </li></ul><ul><ul><li>Obtener la  distribución binaria  y descomprimirla </li><...
Conclusiones <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlet </li></ul><ul><li>JSP </li></ul><ul><li>Java...
Referencias <ul><li>Prerequisitos técnicos Struts:   http:// struts.apache.org / primer.html   </li></ul><ul><li>Struts:  ...
Upcoming SlideShare
Loading in …5
×

Curso Java Avanzado 6 Struts

14,642 views

Published on

Tema 6 - Framework Struts - del Workshop de 25 horas de Java Avanzado.

Published in: Technology, Education
1 Comment
26 Likes
Statistics
Notes
No Downloads
Views
Total views
14,642
On SlideShare
0
From Embeds
0
Number of Embeds
1,137
Actions
Shares
0
Downloads
0
Comments
1
Likes
26
Embeds 0
No embeds

No notes for slide
  • Curso Java Avanzado 6 Struts

    1. 1. Java Avanzado Emilio Avilés Ávila http://www.techmi.es
    2. 2. Workshop (25 horas) Workshop Java avanzado para empresas y profesionales
    3. 3. Temario <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlets </li></ul><ul><li>JSP </li></ul><ul><li>Javabeans </li></ul><ul><li>EJB </li></ul><ul><li>Struts </li></ul><ul><li>Resumen y conclusiones </li></ul>
    4. 4. Tema 6 Struts
    5. 5. Objetivos <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlets </li></ul><ul><li>JSP </li></ul><ul><li>Javabeans </li></ul><ul><li>EJB </li></ul><ul><li>Struts </li></ul><ul><li>Resumen y conclusiones </li></ul><ul><li>Entender los beneficios del MVC </li></ul><ul><li>MVC: Servlet + JSP </li></ul><ul><li>Framework vs Servlet+JSP </li></ul><ul><li>Diferencias, ventajas y desventajas de Struts </li></ul><ul><li>Elementos del framework Struts </li></ul><ul><li>Configurar e Instalar Struts </li></ul>
    6. 6. 6 – Struts <ul><li>Un poco de contexto </li></ul>
    7. 7. 6 – Struts <ul><li>Escenario típico </li></ul><ul><ul><li>Construir un JSP para hacer más sencillo el desarrollo y mantenimiento HTML </li></ul></ul><ul><ul><ul><li>Llamar al servlet cuando hagamos scripting </li></ul></ul></ul><ul><ul><ul><li>Usar beans y custom tag para páginas +complejas </li></ul></ul></ul><ul><ul><li>Pero, no es suficiente… </li></ul></ul><ul><ul><ul><li>Para complejos procesamientos JSP es incómodo </li></ul></ul></ul><ul><ul><ul><li>Separando el código real en servlet, tags y clases, el JSP tiene un aspecto de página única. </li></ul></ul></ul>
    8. 8. 6 – Struts <ul><li>Formas de gestionar una request… </li></ul><ul><ul><li>Sólo con servlets, funciona bien cuando: </li></ul></ul><ul><ul><ul><li>La salida es binaria (imagen) </li></ul></ul></ul><ul><ul><ul><li>Cuando no hay salida (un redirección) </li></ul></ul></ul><ul><ul><ul><li>Layout de la pagina es variable (Portal) </li></ul></ul></ul><ul><ul><li>Sólo con JSP, funciona bien cuando: </li></ul></ul><ul><ul><ul><li>La salida son caracteres (HTML) </li></ul></ul></ul><ul><ul><ul><li>Layout es regular </li></ul></ul></ul><ul><ul><li>Combinación JSP+servlet (MVC) </li></ul></ul><ul><ul><ul><li>Un sola petición visible en muchos resultados </li></ul></ul></ul><ul><ul><ul><li>Equipos grandes de trabajo: diseño & desarrollo </li></ul></ul></ul><ul><ul><ul><li>Procesamiento de datos complejos & layout fijo </li></ul></ul></ul>
    9. 9. 6 – Struts <ul><li>MVC: Model-View-Controler </li></ul><ul><ul><li>Separamos la vista (JSP) del modelo (Beans) comunicándolas con el controlador (servlet) </li></ul></ul>
    10. 10. 6 – Struts <ul><li>MVC: Model – View – Controller </li></ul><ul><ul><li>Los frameworks (Struts, JSF) ayudan pero a veces no son necesarios. </li></ul></ul><ul><ul><ul><li>Con construir RequestDispatcher a veces es suficiente </li></ul></ul></ul><ul><ul><li>Pensar MVC como un método no una arquitectura </li></ul></ul>
    11. 11. 6 – Struts <ul><li>RequestDispatcher (I) </li></ul><ul><ul><li>Definir los beans que representarán los datos </li></ul></ul><ul><ul><li>Usar un servlet para gestionar request </li></ul></ul><ul><ul><ul><li>Leerá los parámetros de la petición </li></ul></ul></ul><ul><ul><ul><li>Verificará que estén bien formados </li></ul></ul></ul><ul><ul><ul><li>Llamará a la lógica de negocio o capa de datos </li></ul></ul></ul><ul><ul><li>Almacenar los resultados en las beans </li></ul></ul><ul><ul><li>Guardar las beans en la request, session o contexto del servlet </li></ul></ul><ul><ul><ul><li>El servlet llamará al setAttribute del request , session … para guardar la referencia a las beans </li></ul></ul></ul>
    12. 12. 6 – Struts <ul><li>RequestDispatcher (II) </li></ul><ul><ul><li>Forward de la request a la página JSP </li></ul></ul><ul><ul><ul><li>El servlet determinará la página adecuada </li></ul></ul></ul><ul><ul><ul><li>A través del método forward() del RequestDispatcher transfiere el control al JSP. </li></ul></ul></ul><ul><ul><li>Extraer los datos de los beans </li></ul></ul><ul><ul><ul><li>jsp:useBean & jsp:getProperty </li></ul></ul></ul><ul><ul><ul><li>OJO : Las JSP no crean ni modifican el bean sólo extraen y muestran los datos de éstas que el servlet ha creado </li></ul></ul></ul>
    13. 13. 6 – Struts <ul><li>Ejemplo RequestDispatcher </li></ul><ul><ul><li>Servlet RequestDispatcher </li></ul></ul>
    14. 14. 6 – Struts <ul><li>Ejemplo MVC: Saldo Banco on-line </li></ul><ul><ul><li>Bean </li></ul></ul><ul><ul><ul><li>BankCustomer </li></ul></ul></ul><ul><ul><li>Capa de negocio </li></ul></ul><ul><ul><ul><li>BankCustomerLookup </li></ul></ul></ul><ul><ul><li>Servlet </li></ul></ul><ul><ul><ul><li>Lee id de cliente, y llama al BankCustomerLookup’s para obtener el BankCustomer a través de un java map </li></ul></ul></ul><ul><ul><ul><li>Utiliza el saldo para redirigir a la página adecuada </li></ul></ul></ul><ul><ul><li>JSP para mostrar resultados </li></ul></ul><ul><ul><ul><li>Saldo negativo: pagina de warning page </li></ul></ul></ul><ul><ul><ul><li>Saldo normal: página standard page </li></ul></ul></ul><ul><ul><ul><li>Mucho saldo: pagina con publicidad añadida </li></ul></ul></ul><ul><ul><ul><li>Cliente desconocido: página de error </li></ul></ul></ul>
    15. 15. 6 – Struts <ul><li>Resultado Ejemplo </li></ul>
    16. 16. 6 – Struts <ul><li>JSTL: JSP Standard Tag Library (I) </li></ul><ul><ul><li>Un Tag de JSP consiste en un Tag con formato </li></ul></ul><ul><ul><li>Cuando la JSP se compila es sustituido por: </li></ul></ul><ul><ul><ul><li>TagHandler : extiende BodyTagSupport o TagSupport </li></ul></ul></ul><ul><ul><ul><li>Implementa doStartTag(), doEndTag(),doInitBody(), doAfterBody() </li></ul></ul></ul><ul><ul><li>Se definen en un TDL ( Tag Library definition) </li></ul></ul><ul><ul><ul><li>Nombre del tag: <taglib-uri> nombreTagLib </taglib-uri> </li></ul></ul></ul><ul><ul><ul><li>La clase TagHandler que lo alberga: <taglib-location> </li></ul></ul></ul><ul><ul><li>Para hacer uso de ello hay que declararlo en el JSP </li></ul></ul>
    17. 17. 6 – Struts <ul><li>JSTL: JSP Standard Tag Library (II) </li></ul><ul><ul><li>Los tags incluidos en struts están documentados en: </li></ul></ul><ul><ul><li>http://struts.apache.org/1.3.10/struts-taglib/index.html </li></ul></ul><ul><ul><ul><li>html : http://jakarta.apache.org/struts/struts-html.html </li></ul></ul></ul><ul><ul><ul><li>bean : http://jakarta.apache.org/struts/struts-bean.html </li></ul></ul></ul><ul><ul><ul><li>logic : http://jakarta.apache.org/struts/struts-logic.html </li></ul></ul></ul><ul><ul><ul><li>nested : http://jakarta.apache.org/struts/struts-nested.html </li></ul></ul></ul><ul><ul><li>Las clases TagHandler que implentan las anteriores funcionalidades están documentadas en: </li></ul></ul><ul><ul><ul><li>html : …/api/org/apache/struts/taglib/html/package-summary.html </li></ul></ul></ul><ul><ul><ul><li>bean : …/api/org/apache/struts/taglib/bean/package-summary.html </li></ul></ul></ul><ul><ul><ul><li>logic : …/api/org/apache/struts/taglib/logic/package-summary.html </li></ul></ul></ul><ul><ul><ul><li>nested : …/api/org/apache/struts/taglib/nested/package-summary.html </li></ul></ul></ul>
    18. 18. 6 – Struts <ul><li>¿Qué es Apache Struts? </li></ul><ul><ul><li>Framework MVC </li></ul></ul><ul><ul><ul><li>Permite desarrollar servlet y JSP mediante MVC </li></ul></ul></ul><ul><ul><li>Colección de Utilidades </li></ul></ul><ul><ul><ul><li>Proporciona utilidades para el desarrollo app Web </li></ul></ul></ul><ul><ul><li>Un conjunto de JTSL </li></ul></ul><ul><ul><ul><li>Para extraer las propiedades de los beans </li></ul></ul></ul><ul><ul><ul><li>Para generar formularios HTML </li></ul></ul></ul><ul><ul><ul><li>Generación condicionada de HTML </li></ul></ul></ul><ul><ul><li>¿Cuál es la manera adecuada de ver Struts? </li></ul></ul><ul><ul><ul><li>Depende del uso, el más común como MVC. </li></ul></ul></ul>
    19. 19. 6 – Struts <ul><li>Ventajas Struts (I) </li></ul><ul><ul><li>Configuración centralizada en fichero </li></ul></ul><ul><ul><ul><li>Ficheros propiedades o XML, en lugar de código </li></ul></ul></ul><ul><ul><ul><li>Muchos cambios no necesitan recompilar código </li></ul></ul></ul><ul><ul><ul><li>Permitiendo centrarnos en desarrollo del modelo </li></ul></ul></ul><ul><ul><li>Form beans </li></ul></ul><ul><ul><ul><li>En JSP,usando property=“*” rellenábamos las propiedades de los beans </li></ul></ul></ul><ul><ul><ul><li>En Struts extendemos esa funcionalidad a muchos procesamiento de datos. </li></ul></ul></ul><ul><ul><li>Bean Tags </li></ul></ul><ul><ul><ul><li>Facilita establecer datos de los beans ( bean:write) </li></ul></ul></ul>
    20. 20. 6 – Struts <ul><li>Ventajas Struts (II) </li></ul><ul><ul><li>HTML tags </li></ul></ul><ul><ul><ul><li>Proporciona tags JSP para generar formularios HTML asociados a beans </li></ul></ul></ul><ul><ul><ul><ul><li>Permite obtener los valores de los campos del formulario de los objetos Java </li></ul></ul></ul></ul><ul><ul><li>Validación de los campos de un formulario </li></ul></ul><ul><ul><ul><li>Campos que requieran de un formato especial </li></ul></ul></ul><ul><ul><ul><li>Si no hay datos o son incorrecto -> Excepción </li></ul></ul></ul><ul><ul><ul><li>Validaciones en la capa cliente (rendimiento/ajax) </li></ul></ul></ul><ul><ul><li>Solución y entorno consistente </li></ul></ul><ul><ul><ul><li>Usando MVC a lo largo de tu aplicación </li></ul></ul></ul>
    21. 21. 6 – Struts <ul><li>Desventajas Struts </li></ul><ul><ul><li>Mayor curva de aprendizaje </li></ul></ul><ul><ul><ul><li>Además de JSP y Servlet, JSTL, descriptores,.. </li></ul></ul></ul><ul><ul><ul><li>Para proyectos pequeños no compensa </li></ul></ul></ul><ul><ul><li>Peor documentación </li></ul></ul><ul><ul><li>Menor soporte vendor </li></ul></ul><ul><ul><ul><li>JSP y Servlet son JSR de Sun standars. </li></ul></ul></ul><ul><ul><ul><li>Struts es de Apache </li></ul></ul></ul><ul><ul><li>Menos transparente y comprensible </li></ul></ul><ul><ul><li>Solución rígida con otras soluciones </li></ul></ul>
    22. 22. 6 – Struts <ul><li>Hola mundo Struts </li></ul><ul><ul><li>Con los IDE es muy fácil: </li></ul></ul><ul><ul><ul><li>Netbeans: Crear Nueva Aplicación Web </li></ul></ul></ul>
    23. 23. 6 – Struts <ul><li>Estructura de carpetas creada </li></ul>
    24. 24. 6 – Struts <ul><li>Añadir Struts a una aplicación existente </li></ul><ul><ul><li>Copiar ficheros Struts a nuestra aplicación </li></ul></ul><ul><ul><ul><li>JAR : </li></ul></ul></ul><ul><ul><ul><ul><li>struts/WEB-INF/lib  myWebApp/WEB-INF/lib </li></ul></ul></ul></ul><ul><ul><ul><li>TLD : </li></ul></ul></ul><ul><ul><ul><ul><li>struts/WEB-INF  myWebApp/WEB-INF </li></ul></ul></ul></ul><ul><ul><ul><li>struts-config.xml : </li></ul></ul></ul><ul><ul><ul><ul><li>struts/WEB-INF  myWebApp/WEB-INF </li></ul></ul></ul></ul><ul><ul><ul><li>application properties : </li></ul></ul></ul><ul><ul><ul><ul><li>struts/WEBINF/classes/resources  myWebApp/WEBINF/classes/resources. </li></ul></ul></ul></ul><ul><ul><ul><li>Si hay validator : </li></ul></ul></ul><ul><ul><ul><ul><li>validation.xml & validator-rules.xml de struts/WEB-INF  myWebApp/WEB-INF. </li></ul></ul></ul></ul><ul><ul><ul><li>Si hay Tiles </li></ul></ul></ul><ul><ul><ul><ul><li>struts-tiles.xml de struts/WEB-INF  myWebApp/WEB-INF </li></ul></ul></ul></ul>
    25. 25. 6 – Struts <ul><li>Algunas Web En Struts </li></ul>
    26. 26. 6 – Struts <ul><li>¿Cómo funciona struts en la Web? MVC </li></ul><ul><ul><li>El navegador genera un solicitud atendida por el controller </li></ul></ul><ul><ul><li>El servlet analiza la información, llama a un action con los parámetros adecuados. (A través de una configuración XML ) </li></ul></ul><ul><ul><li>El action instanciará los objetos de negocio necesarios </li></ul></ul><ul><ul><li>Dependiendo del resultado anterior se mostraran 1/varias JSP </li></ul></ul><ul><ul><li>Éstas podrán consultar el modelo para ejecutar su tarea </li></ul></ul><ul><ul><li>El browser mostrarás las anteriores JSP al usuario. </li></ul></ul>
    27. 27. 6 – Struts <ul><li>Modelo: Action Bean </li></ul><ul><ul><li>Definir una clase (en el paquete src/ejemplo/..) </li></ul></ul><ul><ul><ul><li>Que herede de Action ( extends Action) </li></ul></ul></ul><ul><ul><ul><li>Que sobreescriba execute ( mapping, form, req, res) </li></ul></ul></ul><ul><ul><li>Obtener los valores necesarios del ActionForm , JavaBean , request , session o de donde sea. </li></ul></ul><ul><ul><li>Llamar a los objetos de negocio del Model. </li></ul></ul><ul><ul><li>Analizar los resultados, y retornar un ActionForward </li></ul></ul><ul><ul><ul><li>return(mapping.findForward(&quot;success&quot;) </li></ul></ul></ul>
    28. 28. 6 – Struts <ul><li>Modelo: Action Bean - Ejemplo </li></ul><ul><ul><li>Obtener los valores necesarios del ActionForm </li></ul></ul><ul><ul><li>Validando los parámetros </li></ul></ul><ul><ul><li>Llamar a los objetos de negocio del Model. </li></ul></ul><ul><ul><li>Analizar los resultados y ActionForward </li></ul></ul>
    29. 29. 6 – Struts <ul><li>Modelo: System State Beans </li></ul><ul><ul><li>Objetos de negocio que representan el estado actual del sistema. (Carrito compra) </li></ul></ul><ul><ul><li>Son javaBeans o EJB </li></ul></ul><ul><ul><ul><li>Guardan la referencia sesión Usuario </li></ul></ul></ul><ul><ul><ul><li>Serán modificado desde los Action </li></ul></ul></ul><ul><ul><ul><li>Consultados desde las JSP ( View ) </li></ul></ul></ul><ul><ul><li>No deben tener conocimiento de la View </li></ul></ul>
    30. 30. 6 – Struts <ul><li>Modelo: Business Logic Beans </li></ul><ul><ul><li>Implementan la lógica de negocio. </li></ul></ul><ul><ul><ul><li>Cómo hacer las cosas </li></ul></ul></ul><ul><ul><ul><li>La propia persistencia </li></ul></ul></ul><ul><ul><li>Deben ser perfectamente reutilizables </li></ul></ul><ul><ul><ul><li>Para implementar distintas interfaces </li></ul></ul></ul><ul><ul><ul><li>Incluirse en otras aplicaciones </li></ul></ul></ul><ul><ul><li>No deben tener conocimiento de la View </li></ul></ul><ul><ul><li>No deben tener conocimiento del Controler </li></ul></ul>
    31. 31. 6 – Struts <ul><li>Modelo: Accediendo a la BDD </li></ul><ul><ul><li>Se pueden definir datasource </li></ul></ul><ul><ul><ul><li>Desde el fichero struts-config.xml . </li></ul></ul></ul><ul><ul><ul><li>Desde el action obtenemos la conexión </li></ul></ul></ul>
    32. 32. 6 – Struts <ul><li>Vista: Internationalitation (i18n) </li></ul><ul><ul><li>Soporte para construir aplicaciones multidioma </li></ul></ul><ul><ul><li>Iteración con formularios y otras utilidades </li></ul></ul><ul><ul><ul><li>Mediante la utilización de los JTSL (Tag Library) </li></ul></ul></ul><ul><ul><li>Ejemplo </li></ul></ul><ul><ul><ul><li>Crear un archivo MiAplicacion.properties </li></ul></ul></ul><ul><ul><ul><ul><li>Formato: clave.subclave = texto </li></ul></ul></ul></ul><ul><ul><ul><li>Para cada idioma alternativo: MiAplicacion_xx.properties </li></ul></ul></ul><ul><ul><ul><ul><li>Siendo xx = Código ISO idioma (EJ: en, es, fr, …) </li></ul></ul></ul></ul><ul><ul><ul><li>Lo usaremos en declarando el tag bean y haciendo uso. </li></ul></ul></ul>
    33. 33. 6 – Struts <ul><li>Vista: form </li></ul><ul><ul><li>Struts facilita la gestión con los form </li></ul></ul><ul><ul><ul><li>Obtener/Editar información </li></ul></ul></ul><ul><ul><ul><li>Comprobación y gestión de errores </li></ul></ul></ul><ul><ul><ul><li>Presentación al usuario del form actualizado </li></ul></ul></ul>
    34. 34. 6 – Struts <ul><li>Vista: form </li></ul><ul><ul><li>Pasos para crear un form </li></ul></ul><ul><ul><ul><li>Crear el ActionForm </li></ul></ul></ul><ul><ul><ul><ul><li>Ver la sección model / ActionForm beans </li></ul></ul></ul></ul><ul><ul><ul><li>Crear la página JSP con los tags que provee Struts </li></ul></ul></ul><ul><ul><ul><li>Declarar el ActionForm en struts-config.xml </li></ul></ul></ul><ul><ul><ul><ul><li>/struts-config/form-beans el tag </li></ul></ul></ul></ul><ul><ul><ul><ul><li><form-bean name=&quot;nombreForm&quot; type=&quot;paquete.clase&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><li>Declarar el Action en struts-config.xml </li></ul></ul></ul><ul><ul><ul><ul><li>agregar los atributos </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>name=&quot;nombreForm&quot; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>scope=&quot;(request ó session)“ </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>input=&quot;paginaForm.jsp&quot; </li></ul></ul></ul></ul></ul>
    35. 35. 6 – Struts <ul><li>Controler </li></ul><ul><ul><li>Comprende la funcionalidad desde que el usuario genera un evento (click) hasta que se genera la respuesta al interfaz . </li></ul></ul><ul><ul><li>Struts incluye un servlet (ActionServlet) que recibe las solicitudes del usuario y llama al action bean correspondiente: </li></ul></ul><ul><ul><ul><li>Escribir un action que extienda de org.apache.action.Action </li></ul></ul></ul><ul><ul><ul><li>Configurar Struts-config.xml para incluir el action y los posibles forwards de salida <action-mappings> </li></ul></ul></ul>
    36. 36. 6 – Struts <ul><li>Controler – action-mapping form Bean </li></ul><ul><ul><li>¿Qué pasa si la acción asociada es un formulario? </li></ul></ul><ul><ul><ul><li>Se debe definir el form-bean </li></ul></ul></ul><ul><ul><ul><li>Un action-mapping con el form-bean </li></ul></ul></ul><ul><ul><ul><li>Y el/los forwards necesarios </li></ul></ul></ul><ul><ul><ul><ul><li>En este caso un forward global -> aplica a todos los mappings </li></ul></ul></ul></ul>
    37. 37. 6 – Struts <ul><li>ActionForm Beans (I) </li></ul><ul><ul><li>Son clases que extiende de ActionForm </li></ul></ul><ul><ul><li>Para cada uno de los Inputs del Form implementan </li></ul></ul><ul><ul><ul><li>get() y set() </li></ul></ul></ul><ul><ul><ul><li>validate () </li></ul></ul></ul><ul><ul><ul><li>reset() </li></ul></ul></ul>
    38. 38. 6 – Struts <ul><li>ActionForm Beans (II) </li></ul><ul><ul><li>1. Cuando un usuario completa un formulario y lo envía </li></ul></ul><ul><ul><li>2. El controller a través de struts-config.xml busca el ActionForm Bean asociado y sino lo crea . </li></ul></ul><ul><ul><li>2.1 Luego realiza un set por cada input del form </li></ul></ul><ul><ul><li>2.2 Y finalmente llama al método validate </li></ul></ul><ul><ul><li>3. Si KO retorna errores llama al JSP incluyendo los errores </li></ul></ul><ul><ul><li>4. Si OK llama al perform del Action ( struts-config-xml ) pasándole el ActionForm Bean como parámetro </li></ul></ul>
    39. 39. 6 – Struts <ul><li>ActionForm - Ejemplo </li></ul>
    40. 40. 6 – Struts <ul><li>ActionForms – Principios </li></ul><ul><ul><li>No debe tener nada que corresponda a la lógica de negocio. </li></ul></ul><ul><ul><li>No debería tener más que implementaciones de </li></ul></ul><ul><ul><ul><li>getters y setters por cada input </li></ul></ul></ul><ul><ul><ul><li>Y los métodos reset y validate </li></ul></ul></ul><ul><ul><li>Debe ser un Firewall entre el usuario y el Action que detenga todo tipo de errores de incompletitud o inconsistencia </li></ul></ul><ul><ul><li>Si el formulario se desarrolla en varias páginas </li></ul></ul><ul><ul><ul><li>El ActionForm y el Action deberán ser los mismos, </li></ul></ul></ul><ul><ul><ul><li>Permitirá que los input se puedan reorganizar en distintas páginas sin cambiar los ActionForm ni los Action </li></ul></ul></ul>
    41. 41. 6 – Struts <ul><li>Struts de manera manual </li></ul><ul><ul><li>Obtener la distribución binaria y descomprimirla </li></ul></ul><ul><ul><li>Copiar en nuestro directorio WEB-INF/lib </li></ul></ul><ul><ul><ul><li>lib/commons-*.jar (clases comunes de Jakarta) </li></ul></ul></ul><ul><ul><ul><li>lib/struts.jar (JAR de las clases Struts) </li></ul></ul></ul><ul><ul><ul><li>lib/struts-*.tld (Tag Library Descriptors) </li></ul></ul></ul><ul><ul><li>Modificar el WEB-INF/web.xml </li></ul></ul><ul><ul><ul><li><servlet> que define el Servlet del Controller </li></ul></ul></ul><ul><ul><ul><li><servlet-mapping> atiende a las peticiones </li></ul></ul></ul><ul><ul><ul><li>Incluir la definición de los TagLibraries <taglib> </li></ul></ul></ul><ul><ul><li>Agregar la definición de los TagLibraries a los JSP </li></ul></ul><ul><ul><ul><li><%@ taglib uri=&quot;strutsBean&quot; prefix=&quot;bean&quot; %> </li></ul></ul></ul><ul><ul><ul><li><%@ taglib uri=&quot;strutsHtml&quot; prefix=&quot;html&quot; %> </li></ul></ul></ul><ul><ul><ul><li><%@ taglib uri=&quot;strutsLogic&quot; prefix=&quot;logic&quot; %> </li></ul></ul></ul><ul><ul><li>Crear el struts-config.xml donde se configure el Controller </li></ul></ul>
    42. 42. Conclusiones <ul><li>Introducción al desarrollo Web </li></ul><ul><li>Servlet </li></ul><ul><li>JSP </li></ul><ul><li>Javabeans </li></ul><ul><li>EJB </li></ul><ul><li>Struts </li></ul><ul><li>Resumen y conclusiones </li></ul><ul><ul><li>Uso adecuado del patrón Model-View-Controller </li></ul></ul><ul><ul><li>Diferencias, ventajas y desventajas de Struts </li></ul></ul><ul><ul><li>Distinguir cada uno de los elementos que intervienen en el framwork Struts </li></ul></ul><ul><ul><li>Instalar y configurar Struts </li></ul></ul>
    43. 43. Referencias <ul><li>Prerequisitos técnicos Struts: http:// struts.apache.org / primer.html </li></ul><ul><li>Struts: http:// es.wikipedia.org / wiki / Jakarta_Struts </li></ul><ul><li>User Guide: http:// struts.apache.org /1.x/ userGuide / index.html </li></ul><ul><li>Tutorial Struts: http:// courses.coreservlets.com / Course - Materials / struts.html </li></ul>

    ×