Académique Documents
Professionnel Documents
Culture Documents
mayo de 2005
Qu es STRUTS?
Strut: Componente estructural no visible que soporta una construccin o estructura Framework Opensource para construir aplicaciones web Java
Parte de proyecto Jakarta de Apache Se basa en JavaBeans, ResourceBundles, XML, Jakarta Commons Fomenta el modelo MVC Model 2
HTTP
Protocolo original para transporte HTML Hoy transporte genrico de archivos Sin estado solucin cookies y reescritura de URLs Peticin (GET, POST) Respuesta (RESPONSE)
Java Servlets
Resuelven dos problemas de CGIs:
Rendimiento: Una instancia mltiples hilos Portabilidad: write-once run-anywhere Abstraccin de sesin, peticin, respuesta en base objetos Java.
Inconvenientes:
out.println("<P>One line of HTML.</P>"); out.println("<P>Another line of HTML.</P>");
Manipulables por introspeccin (sin necesidad de conocer nombre de propiedades) Estndar de paso de variables a JSPs
JSP Model 1
JSP Model 1. Primera recomendacin diseo de aplicaciones web en base a JSPs
JSPs, JavaBeans, JDBC
Problemas Model 1
Cdigo spaguetti:
Lgica compleja conduce a diversos flujos que se entremezclan dentro de un JSP (condiciones y bucles)
Difcil reutilizacin
Cada JSP suele ser autocontenida, incorpora toda la funcionalidad. Prcticas Copy&Paste (repeticin de funcionalidad)
Depuracin problemtica
Los contenedores de servlets devuelve error en lnea de JSP convertido a Servlet.
Origen MVC
Partes:
Modelo: Sistema contenedor de datos Vista: Sistema de presentacin (salida) Controlador: Lgica de interaccin usuario (entrada)
Model 2
Separacin lgica/presentacin:
Datos representados en JavaBeans (modelo), que contienen lgica de negocio y estado de la aplicacin. Servlets (controlador) gestionan acceso a datos y el flujo de navegacin (controlador) JSPs gestionan la presentacin (vista).
Por qu Struts?
Introduccin Struts
Struts:
Elemento central Controlador MVC. Puente entre vista y controlador Incorpora elementos necesarios invisibles comunes a toda aplicacin web profesional
Beneficios
Refuerza la modularidad y particin de la aplicacin Incrementa la separacin de roles Incrementa la manejabilidad del cdigo Incrementa la extensibilidad del cdigo Centra al desarrollador en la lgica de negocio. Reduce el TCO de una aplicacin, reduciendo sus costes de desarrollo y mantenimiento
Arquitectura
Vista:
Controlador:
Configuracin:
A travs del fichero web.xml (comn a toda aplicacin web) y el fichero struts-config.xml (comn a toda aplicacin que haga uso de struts)
Enlace a un recurso en la aplicacin Modelados a travs de clase ActionForward. Definidos por configuracin. Ejemplo:
<forward name="welcome path="/pages/index.jsp"/>
Formularios:
HTML y HTTP proporcionan mecanismos para enviar informacin de usuario a la aplicacin Struts proporciona la clase ActionForm.
Son JavaBeans con mtodos para validar los datos recibidos
El desarrollador slo define el ActionForm y Struts mapea automticamente sus propiedades con campos del formulario HTML con el mismo nombre.
public final class LogonForm extends ActionForm { private String username = null; public String getUsername() { return (this.username); } public void setUsername(String username) { this.username = username; } }
Actions a medida:
En un formulario action es a dnde van dirigidos los datos Struts proporciona Action para recoger los datos en cuestin, que se le proporcionan a travs de un ActionForm. Ejemplo:
public final class LogonAction extends Action { public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { MyForm myForm = (MyForm) form; // ... return mapping.findForward("continue"); } }
Actions a medida:
Desde la versin 1.1 de Struts se prefiere el mtodo execute() frente a perform()
ActionMapping.
De cara al exterior sirve para proporcionar una URI a un Action determinado. Se especifica por configuracin. Ejemplo: <action-mappings> <action path="/logonSubmit" URI type="app.LogonAction" Clase derivada name="logonForm" de ActionMapping scope="request" validate="true" Requiere input="/pages/logon.jsp"/> validacin? </action-mappings>
JavaBeans:
No son parte de Struts, sino son parte de especificacin de Java. Struts no fija en dnde se almacena el modelo (EJBs, BBDD relacional, servidor LDAP). Habitualmente relacionados con ActionForms.
Recomendable separarlos Struts ofrece funcionalidad para mapear propiedades de ActionForm a JavaBean del modelo
JSPs:
Struts no obliga utilizar JSPs para la vista, podra utilizarse otras alternativas (templates velocity). Struts incluye libreras de tags.
Facilitan interaccin con componentes de controlador Incorporan lgica til (p.e. facilidad para incorporar bucles en presentacin) Incorporan funcionalidad adicional: Soporte para internacionalizacin.
JSPs:
struts-html.tld. Tags JSP que encapsulan componentes de formularios HTML.
JSP normal: <input type="text" name="username
struts-bean.tld. Tags JSP para el manejo de beans y soporte de internacionalizacin adicional al nativo de Java (parte de funcionalidad en JSTL).
JSPs:
struts-logic.tld. Tags para testear valores de propiedades (mucha funcionalidad presente en JSTL), iterar sobre colecciones, etc.
Ejemplo. Iteracin sobre beans de una HashTable:
<logic:iterate id="element" name="myhashtable"> Next element is <bean:write name="element property="value"/> </logic:iterate>
struts-nested.tld. Tags JSP que permiten acceder de forma ordenada a beans encapsulados en otros beans (anidamiento).
JSPs:
struts-tiles.tld. Tags para crear bloques reutilizables de presentacin (tiles). Facilita cambiar el aspecto general de una aplicacin (Look & Feel).
Se basa en la directiva include de los JSPs Permite crear definiciones de pantalla en base a bloques: cabecera, pie, menu, cuerpo, etc. Permite definir distribuciones uniformes para todo el sitio (layouts) Ofrece un soporte alternativo para internacionalizacin (Tiles diferentes dependiendo del Locale).
Configuracin (I)
web.xml:
Configuracin (II)
ApplicationResources.properties
Fichero properties utilizado por defecto para las etiquetas de los mensajes internacionalizados.
struts-config.xml:
Los componentes estn dbilmente acoplados para permitir reutilizacin e independencia unos de otros Struts-config.xml configura la relacin entre ellos. Define principalmente:
Action-mappings: Qu Actions ha de aceptar el ActionServlet Form-beans: Las clases ActionForms que aceptar como entrada la aplicacin
Configuracin (III)
Ejemplo struts-config.xml:
Todo en uno
Referencias
MVC:
http://ootips.org/mvc-pattern.html http://www.objectarts.com/EducationCentre/Overviews/MVC.htm
JSP/Servlets:
http://java.sun.com/products/servlet/ http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/
Struts:
http://struts.apache.org/ http://rollerjm.free.fr/pro/Struts11.html