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

Más contenido relacionado

PPT
Patron Mvc Struts 1 y 2
PPT
Patronmvc 090816170431-phpapp02
PPTX
Java Web - Struts
PDF
Frameworks de Java
PDF
Java Web Lección 03 - MVC
PDF
Curso Java Resumen - Curso 2005-2006
PDF
Manual Basico De Struts
PDF
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
Patron Mvc Struts 1 y 2
Patronmvc 090816170431-phpapp02
Java Web - Struts
Frameworks de Java
Java Web Lección 03 - MVC
Curso Java Resumen - Curso 2005-2006
Manual Basico De Struts
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006

La actualidad más candente (20)

PDF
JAVA SERVER FACES - LECCION 01 - PRIMEROS PASOS
PDF
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
PPTX
Poo introduccion al patron mvc - renee morales calhua
PPTX
Model View Controller (MVC)
PPT
Frameworks Java
PDF
Java web 01 - servlets
PDF
Analisis del patron mvc
PDF
Jsf Java Server Faces
PDF
JavaFX 2
PPTX
Acciones
ODP
Spring Mvc Final
PPTX
Patron de Desarrollo Modelo Vista Controlador
PDF
PPTX
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
JAVA SERVER FACES - LECCION 01 - PRIMEROS PASOS
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Poo introduccion al patron mvc - renee morales calhua
Model View Controller (MVC)
Frameworks Java
Java web 01 - servlets
Analisis del patron mvc
Jsf Java Server Faces
JavaFX 2
Acciones
Spring Mvc Final
Patron de Desarrollo Modelo Vista Controlador
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
Publicidad

Similar a Curso Java Avanzado 6 Struts (20)

PPTX
Strust
PDF
10.desarrollowebconjava
PDF
Org tutorial struts_2010
PPT
Arquitectura java web
PDF
Hands-on Spring 3: The next generation
PPT
01 introducción
PPTX
06. jsf (java server faces) (1)
PPT
Curso Java Avanzado 3 Js Ps
PDF
Aplicación abc. asp net mvc 3
PDF
PPT
Struts en Java
PPT
Curso Java Avanzado 5 Ejb
PDF
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
PDF
Introducción a Tomcat
PDF
Taller de Backbone.js en Betabeers Malaga 06/09/2012
PDF
PDF
Presentación - Recordando bases de datos.pdf
PDF
Java Web Lección 02 - JSP
PPT
J2 Ee Para Seres Humanos Slides
PDF
[ES] Conectividad de java a base de datos(jdbc)
Strust
10.desarrollowebconjava
Org tutorial struts_2010
Arquitectura java web
Hands-on Spring 3: The next generation
01 introducción
06. jsf (java server faces) (1)
Curso Java Avanzado 3 Js Ps
Aplicación abc. asp net mvc 3
Struts en Java
Curso Java Avanzado 5 Ejb
Guia de estudio para Oracle Certified Java EE 6 Web Component Developer
Introducción a Tomcat
Taller de Backbone.js en Betabeers Malaga 06/09/2012
Presentación - Recordando bases de datos.pdf
Java Web Lección 02 - JSP
J2 Ee Para Seres Humanos Slides
[ES] Conectividad de java a base de datos(jdbc)
Publicidad

Más de Emilio Aviles Avila (20)

PPTX
Experiencias emprendedor de apps - AppCierta
PPTX
Apps Ser o Estar
PPTX
Aplicaciones móviles, experiencias de emprendedor
PPTX
Charla estrategia desarrollo aplicaciones móviles Universidad Girona
PPT
Desarrollo android - 6 - multimedia
PPT
Desarrollo android - 5 - almacenamiento de datos
PPT
Desarrollo android - 4 - arquitectura de aplicación
PPT
Desarrollo android - 3 - entorno de desarrollo
PPT
Desarrollo android - 2 - arquitectura del sistema
PPT
Desarrollo android -1 - introduccion
PPTX
El mercado de las aplicaciones moviles
PDF
Curso Taller Android Procesado Imagen
PDF
Taller Curso android WhereAmI
PDF
Curso taller android radio streaming
PDF
Como ganar dinero con las apps
PPT
Curso introducción a android
PPT
Curso Introducción a android
PPT
Curso desarrollo en android
PPTX
TeCHmi Service Portfolio
PPT
Curso Uml 3.2 Proceso Unificado
Experiencias emprendedor de apps - AppCierta
Apps Ser o Estar
Aplicaciones móviles, experiencias de emprendedor
Charla estrategia desarrollo aplicaciones móviles Universidad Girona
Desarrollo android - 6 - multimedia
Desarrollo android - 5 - almacenamiento de datos
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android - 3 - entorno de desarrollo
Desarrollo android - 2 - arquitectura del sistema
Desarrollo android -1 - introduccion
El mercado de las aplicaciones moviles
Curso Taller Android Procesado Imagen
Taller Curso android WhereAmI
Curso taller android radio streaming
Como ganar dinero con las apps
Curso introducción a android
Curso Introducción a android
Curso desarrollo en android
TeCHmi Service Portfolio
Curso Uml 3.2 Proceso Unificado

Último (20)

PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Maste clas de estructura metálica y arquitectura
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
MANUAL de recursos humanos para ODOO.pdf
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PDF
clase auditoria informatica 2025.........
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Maste clas de estructura metálica y arquitectura
Power Point Nicolás Carrasco (disertación Roblox).pptx
Sesion 1 de microsoft power point - Clase 1
MANUAL de recursos humanos para ODOO.pdf
TRABAJO DE TECNOLOGIA.pdf...........................
Influencia-del-uso-de-redes-sociales.pdf
Diapositiva proyecto de vida, materia catedra
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Historia Inteligencia Artificial Ana Romero.pptx
clase auditoria informatica 2025.........
historia_web de la creacion de un navegador_presentacion.pptx
informe_fichas1y2_corregido.docx (2) (1).pdf
Propuesta BKP servidores con Acronis1.pptx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
SAP Transportation Management para LSP, TM140 Col18
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
CyberOps Associate - Cisco Networking Academy
Presentacion de Alba Curso Auditores Internos ISO 19011

Curso Java Avanzado 6 Struts

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