jakarta struts version 1.3.5 juan manuel zorrilla gamarra mario titto acostupa

25
Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa.

Upload: milagros-mendez-godoy

Post on 24-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Jakarta Struts version 1.3.5

Juan Manuel Zorrilla Gamarra

Mario Titto Acostupa.

Page 2: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Contenido

Patrón de diseño MVC La framework Apache Struts

Instalación Flujo de control en Struts

Procesamiento de peticiones Control de errores Manejo de Formularios

Librerías de etiquetas de Struts

Page 3: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Modelos de desarrollo de aplicaciones web en Java

Los servlets son buenos ejecutando lógica de negocio, pero no son tan buenos presentando información

JSPs son muy buenos presentando pero pésimos introduciendo lógica programática en ellos

La combinación Servlet/JSPs es lo más común hoy en día en el desarrollo de aplicaciones web

Dos arquitecturas: Model-1: JSPs para presentación y control y JavaBeans para la

lógica Model-2: Model-View-Controller = JavaBeans-JSPs-Servlets

MVC es tan común que se han desarrollado varias infraestructuras en torno a este patrón de diseño: Apache Struts Java Server Faces Spring Etc…

Page 4: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Arquitectura Model 1

Page 5: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Arquitectura Model 2

Page 6: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Modelo MVC 0

Page 7: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Modelo MVC I

El Controlador (Controller) Servlet central recibe peticiones, procesa URL

recibida y delega procesamiento a JavaBeans Servlet guarda resultado de procesamiento

realizado por JavaBeans en el contexto de la petición, la sesión o la aplicación

Servlet transfiere control a un JSP que lleva a cabo la presentación de resultados

Page 8: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Modelo MVC II

El Modelo (Model) JavaBeans (o EJBs para aplicaciones más

escalables) desempeña el rol de modelo: Algunos beans ejecutan lógica Otros guardan datos

Normalmente: 1. Servlet controlador invoca un método en bean

lógico y éste devuelve un bean de datos

2. Autor de JSP tiene acceso a bean de datos

Page 9: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Modelo MVC III

La Vista (View) Rol ejecutado por JSPs Servlet Controlador transfiere control al JSP

después de haber guardado en un contexto el resultado en forma de un bean de datos

JSP usa jsp:useBean y jsp:getProperty para recuperar datos y formatear respuesta en HTML o XML

Page 10: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Modelo MVC IV

En resumen: Los beans o EJBs ejecutan la lógica de

negocio y guardan los resultados Los JSPs proveen la información formateada Los servlets coordinan/controlan la ejecución

de los beans y los JSPs

Page 11: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Frameworks

Las frameworks pueden ser vistas como implementaciones de patrones de diseño que facilitan la reutilización de diseño y código

Dado que MVC ha sido utilizado en muchas aplicaciones web, el desarrollo de frameworks que den soporte a áreas comunes en todas las aplicaciones MVC es necesario Apache Struts es una de estas frameworks

Aplicaciones basadas en Struts consistirán de: Código Java Deployment descriptors que configuran la framework

para el uso de nuestra aplicación

Page 12: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Apache Jakarta Struts

Implementación del modelo 2/patrón de diseño MVC que facilita la creación de aplicaciones web en Java

Creada por Craig McClanahan y donada a la Apache Software Foundation en el 2000 (pertenece a Apache Jakarta)

Page 13: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

¿Qué proporciona Struts?

Un servlet (ActionServlet) que actúa como controlador MVC totalmente configurable

Clases base que son extendidas para implementar la lógica de la aplicación web: Struts Action Struts ActionForm

Un rico conjunto de etiquetas personalizadas JSP que cooperan con el controlador para su uso en la capa view de MVC

Varias opciones para la validación de entrada de usuario en formularios HTML: ActionForm o Validator Framework

Mecanismos para el manejo y reporte de errores Soporte para la internacionalización (i18n) a través de ficheros de

recursos y Java Locales Soporte para fuentes de datos Y más …..

Page 14: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Instalando Apache Struts I Instalar Apache Tomcat 4.x o superior se recomienda un Tomcat 5.5 Bajar la última versión de Apache Struts de:

http://struts.apache.org/download.cgi Actualmente en la versión 1.3.5 (recientemente ha salido la version 2.0)

Lo mejor es tomar la aplicación struts-blank.war como punto de partida.

Para esto lo mejor es importar el archivo .war en eclipse que incluye un asistente para dicha tarea.

Page 15: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Actions en Struts Se crea una acción extendiendo la clase

org.apache.struts.action.Action El ActionServlet ejecuta acciones invocando el método execute()

tu clase Action El método execute() contiene código para manipular el modelo

Dentro del método execute() tienes acceso a: Cabeceras y parámetros de peticiones HTTP Atributos/beans guardados en los contextos

application/session/request scope Struts ActionForm asociados con la acción (opcional) El ActionMapping associado a esta acción (opcional) El objeto httpResponse

El método execute() devuelve un objeto ActionForward que indica al ActionServlet a dónde transferir el control a continuación

Page 16: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Form Beans

Un ActionForm es un JavaBean con propiedades que corresponden a los controles de un formulario HTML. Los parámetros son mapeados a propiedades del bean. Proveen un mecanismo de buffer/validate/convert que necesitamos para

asegurarnos que el usuario introduce los datos esperados Actúa como puente entre el navegador y el objeto de negocio

El programador define un form bean extendiendo la clase org.apache.struts.action.ActionForm (o de forma declarativa usando org.apache.struts.action.DynaActionForm)

Hay que definir cada una de las propiedades en la clase y escribir los getters/setters correspondientes, siguiendo las reglas de JavaBeans

Después de escribir el código del form bean, es necesario asociarlo con una o más acciones a través del fichero de configuración de Struts struts-config.xml

Cada vez que se llama a la acción , el ActionServlet poblará las propiedades con los valores de los parámetros recibidos en el formulario HTML

Las propiedades no sólo pueden ser escalares sino que también pueden ser colecciones de valores

Page 17: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

¿Por qué se necesitan Forms Beans?

¿Por qué no simplemente se accede a los parámetros de una petición, en vez de usar un form bean como intermediario?

Razones: Los Form beans pueden ser validados antes de que una acción sea

invocada Si la propiedad validate de un elemento Action en el fichero

struts-config.xml contiene el valor true (por defecto), el método validate será invocado

Si un form bean falla en la validación puede hacer que Struts envíe al usuario de vuelta a la vista (JSP) desde la que se realizó el POST en primer lugar, junto con un mensaje de error Es importante asignar a la propiedad input del elemento action en

struts-config.xml una referencia a la vista que entregó el formulario Los form beans pueden ser usados por múltiples acciones o incluso

una aplicación completa Si se configura al ActionController para que guarde un form bean

en el contexto de sesión se permitirá el uso del form bean en todas las peticiones web que llegan a la aplicación

Page 18: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Dynamic Action Forms Son ActionForms creados de manera declarativa en struts-config.xml Una o varias propiedades dinámicas pueden ser pasadas a una instancia de

org.apache.struts.action.DynaActionForm

<form-bean name=“checkoutForm” type=“org.apache.struts.action.DynaActionForm”> <form-property name=“firstName” type=“java.lang.String”/> <form-property name=“lastName” type=“java.lang.String”/> <form-property name=“age” type=“java.lang.Integer” initial=“18”/></form-bean>

Page 19: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Recursos de String/Manejo de Errores

Recursos de String Todos los strings usados en mensajes en JSPs tanto de datos de aplicación

como de errores puedes ser colocados en un ficheros de recursos (ApplicationResources.properties)

Struts proporciona etiquetas personalizadas JSP tags para acceder a estos recursos<bean:message key="prompt.goodguess.heading"/>

Manejo de errores Se recomienda que el manejo de errores se lleve a cabo dentro del método

execute() y el control se transfiera a la vista apropiadaerrors.add("passphrase",new

ActionError("error.passphrase.required")); Struts proporciona un mecanismo separado para permitir la implementación de

un manejador global de excepciones Struts proporciona etiquetas JSP que ayudan en la visualización de los errores

en tu JSP:<html:errors property=“passphrase”/>

Page 20: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Struts Tag Libraries

Documentadas en http://www.onjava.com/lpt/a/4034

La framework Struts proporciona un conjunto de 6 librerías de etiquetas, que asisten en la tarea de la creación de la vista de MVC para evitar incluir código Java en los JSPs: Bean Tags HTML Tags Logic Tags

Las funcionalidad de las etiquetas definidas en las librerías Bean y Logic es también provista por las librerías core y fmt de JSTL Se recomienda el uso de las librerías en JSTL

Page 21: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

HTML Tags Estas etiquetas son principalmente usadas para:

Crear formularios de entrada de datos y Otras utilidades para visualizar interfaces basados en HTML.

Algunas de las acciones más útiles son: base genera un elemento HTML <base> errors condicionalmente visualiza un conjunto acumulado

de mensajes de error form define un formulario de entrada text visualiza un campo de entrada de tipo texto messages condicionalmente visualiza un conjunto de

mensajes acumulados submit visualiza un botón de entrega Etc.

Page 22: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Logic Tags Usadas para:

Iterar sobre colecciones Generación condicional de salida, y Flujo de aplicación

Algunas de las acciones más útiles son: present genera el contenido de marcado dentro de esta

etiqueta si el valor indicado es encontrado en esta petición notPresent lo opuesto a present iterate repite el contenido anidado dentro de esta etiqueta

al iterar sobre una colección forward transfiere control a la página especificada por la

entrada ActionForward. Etc.

Page 23: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Bean Tags

Usadas pricipalmente para: Escribir por pantalla los valores de los request en

los jsp. Definir atributos en el contexto de la pagina en

tiempo de compilación. Algunas de las mas usadas son:

Define: define un atributo en el contexto de la petición en tiempo de compilación.

Write: muestra por pantalla un valor de un objeto que se encuentre en el contexto de la petición.

Page 24: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Problemas con Struts…

buena cantidad de sobrecarga en el aprendizaje y el mantenimiento (puede no ser adecuado para proyectos pequeños).

Propiedades dinámicas del lado del cliente y la integración de validación aún en las obras.

Algunos dolores de cabeza de integración en entornos no-Tomcat.

Nueva clase de problemas de seguridad a tener en cuenta (con una población de beans automática)Todavía bastante joven.

Page 25: Jakarta Struts version 1.3.5 Juan Manuel Zorrilla Gamarra Mario Titto Acostupa

Fin