Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIN
Struts es un framework para el desarrollo Web basado en el patrn de diseo MVC (modelo, vista, controlador). Gracias a Struts podemos construir aplicaciones Web sin meter cdigo java en nuestras pginas jsp, en su lugar Struts tiene unos tags realmente interesantes que nos permiten reducir el tiempo de desarrollo.
Que es un Framework
Un frameworks es una herramienta que se basa en soluciones reutilizables para el desarrollo y/o implementacin de una aplicacin que permite acotar tiempos, reducir cdigo y optimizar tareas.
El patrn de diseo MVC consiste en separar una aplicacin en tre componentes: Modelo: Reglas de Negocio, acceso a los datos y Persistencia.( Beans, EJB, ORM) Vista: Gestin de la Interfaz de los datos a los usuarios. (html, jsp, javaScript, flex, ajax etc.) Controlador: Gestiona eventos entre el Modelo y la vista. (struts Form,strutsAction, struts-conf).
STRU TS
Como regla principal diremos que la Vista no podr acceder al modelo directamente si no que debe pasar por el controlador para acceder al modelo. La Vista consiste en un conjunto de paginas jsp y tags personalizados que aporta struts. Estas etiquetas permiten separar la vista del controlador debido a que estas etiquetas acceden al modelo.
STRU TS
El controlador Struts se encarga de tres tareas: Validaciones simples: Consiste en validaciones simples sin acceder al modelo, se utiliza para comprobar que se hayan ingresado todos los datos necesarios, para comprobar la longitud de las contraseas o de las direcciones de correo . Esto se logra extendiendo la clase ActionForm Validaciones Complejas: Se realiza extendiendo la clase base de struts llamada Action. A este nivel se comprueba contra las reglas de negocio (modelo). Por ejemplo: Se instancian objetos del modelo,se realizan consultas contra la base de datos y se obtienen los errores etc.
STRU TS
Control de flujo o de Navegacin: A travs de un archivo de configuracin (struts-conf) se gestiona el flujo de navegacin entre paginas, que tambin se logra extendiendo la clase ActionForm y Action.
STRU TS
STRU TS
El siguiente ejemplo lo vamos a realizar en NetBeans 6.5 en espaol.Tambin pueden usar una versin anterior pero les recomiendo que sea a partir de la versin 6.0. Como primer paso vamos a abrir NetBeans 6.5 y crear un proyecto Nuevo, para ello iremos a Archivo ->Proyecto Nuevo
STRU TS
STRU TS
Seleccionamos el Servidor Web, en mi caso elegir Glass Fish V2.Una vez seleccionado el server presionamos siguiente.
STRU TS
Seleccionamos el frameworks Struts. Nos fijamos en la opcin Application Resource. Aqu definimos el archivo de recursos para localizar errores, titulos de las paginas etc. Podemos dejar el nombre por defecto o bien colocar uno personalizado. Despues de este proceso presionamos Terminar.Con estos pasos ya tenemos nuestro proyecto creado.
STRU TS
Una vez dentro del proyecto como primer paso vamos a definir nuestra separacin que propone el patrn MVC, para ello vamos a crear paquetes dentro del proyecto. Nos dirijimos a Source Packages->Nuevo->nuevo Paquete
STRU TS
luego introducimos el Nombre del paquete y pulsamos Terminar. Tenemos que crear primeramente el paquete Modelo. luego creamos el paquete Controladores, a stos vamos a separarlos en Form y Action. Entonces seleccionamos el paquete Controladores->nuevo Paquete e introducimos Form
STRU TS
Ahora no nos esta faltando algo? y la vista? Bueno si, la vista no vamos a crear un nuevo Paquete debido que se almacena en WebPages en ese lugar es donde crearemos nuestras paginas
STRU TS
Creando el Modelo
STRU TS
STRU TS
Nuestro modelo se basar en una clase java llamada usuarios. Entonces seleccionamos el paquete Modelo->nuevo->clase java introducimos el nombre de la clase en este caso sera usuarios y pulsamos terminar. como atributo tendremos el nombre del usuario y la clave.
Si queremos generar el codigo en forma automtica debemos ingresar los atributos luego dar click derecho->insertar codigo y luego generar el codigo deseado
STRU TS
Una vez que tenemos el Modelo vamos a crear un jsp que permita loguearse. nos vamos a WebPages->nuevo->JSP
STRU TS
STRU TS
Bueno vamos a crear un simple formulario que tenga el ingreso del nombre de usuario, la contrasea y un botn para confirmar; para realizarlo vamos a utilizar algunos tags de Struts que nos permiten crear estos componentes, como vern struts tambin trabaja sobre la Vista. Primero debemos agregar a nuestro JSP las siguentes librerias: <%@ taglib uri=http://jakarta.apache.org/struts/tags-bean prefix=bean %> <%@ taglib uri=http://jakarta.apache.org/struts/tags-html prefix=html %> <%@ taglib uri=http://jakarta.apache.org/struts/tags-logic prefix=logic %> una vez incluidas estas librerias ya podremos acceder a los tags de Struts, como se puede observar las librerias se dividen en 3: Bean: Permiten acceder a los Bean de nuestra aplicacion. html: Tags basados en componentes html. logic: Iteracion, procesamiento condicional y control de flujo.B bien el cdigo es el siguiente:
STRU TS
STRU TS
primero creamos un tag form (html:form) ste no tiene la posibilidad de asignar un nombre. Cada tag posee una propiedad que si o si debemos tener en el Form es el action como an no he creado acciones struts lo dejo sin accin; lo mismo ocurre con los cuadros de texto la propiedad (property) hay que colocarlo si o si como tampoco tengo esa informacin lo dejo vaco.Bien ahora presionamos F6. NetBeans procedera a arrancar el server, realizar el deploy y levantar el proyecto en la Web.
STRU TS
El servidor nos dice que no puede ejecutar el proyecto debido a que los componentes struts necesitan una accin y cada componente debe estar asociado a una propiedad Beans de struts. Entonces vamos a crear las acciones para el login. Nos dirijimos a Source Packages->Nuevo->Otro
STRU TS
Pongamos las cosas claras: Cada formulario de la Vista se debe corresponde con un ActionForm Bean es por este medio que struts puede realizar las validaciones simples y los Struts Action obtienen la informacin de la Vista a travs de los Struts ActionForm Bean. Entonces vamos a seleccionar StrutsActionForm Bean.
STRU TS
colocamos un Nombre en este caso ser login ya que hace referencia a login.jsp, del comboBox Configuration File elegimos la primera opcion y presionamos Terminar. Cuando damos Terminar struts va mapeando las acciones correspondientes, sto se puede observar en WebPages->WEB-INF>struts-conf: en este archivo de mapping podemos observar los FormBeans, los global-forwards, los action-mappings etc. Vamos a observar como se ha mapeado el FormBeans:
STRU TS
STRU TS
Una vez dentro de la clase login vamos a ver que NetBeans nos crea algunos atrubutos y mtodos por defecto: private String name; private int number; public String getName() { return name; } public void setName(String string) { name = string; } public int getNumber() { return number; } public void setNumber(int i) { number = i;} lo que vamos a hacer es borrarlos a todos y vamos a definir nuestro propio FormBean de la siguiente manera:
Como pueden ver esta clase extiende a la clase ActionForm y lo que basicamente se define son los campos que tenemos en el formulario login.jsp ya que la responsabilidad del ActionForm es: 1.Recoger todos los datos del Formulario 2.Realizar la validacin simple Tambin de esta manera en las propiedades de los componentes de la Vista vamos a hacer referencia a este formulario por ejemplo: <html:text name=usuario property=usuario></html:text> ahora vamos a sobrecargar el mtodo validate () que es la encargada de realizar las validaciones simples.
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){ ActionErrors errors = new ActionErrors(); if(usuario.length()<=0) { //tratar errores} return errors; }
Aqu aparece un dato importante: ActionErrors a travs de esta clase se pueden obtener los errores y visualizarlo en el formulario.
STRU TS
STRU TS
Sencillo, en el archivo de recursos de struts que se crea junto con el proyecto Web, en este archivo no solamente podes definir errores si no tambin constantes que se pueden utilizar en cualquier pgina del proyecto. Este archivo lo podemos ubicar en Source Packages->paquete Predeterminado en esa ubicacion se encuentra un archivo con extensin properties, el nombre se define al momento de crear el proyecto. Dentro de este archivo vamos a definir lo siguiente:
STRU TS
Vamos a analizar el codigo: se comprueba que los atributos de la clase no estn vacos si uno de ellos est vacio se agrega el error al ActionErrors, fijense que el ActionErrors actua como un Hash que hace referencia al archivo de recursos. con mapping que es una instancia de ActionMapping podemos controlar el flujo de la aplicacin en este caso tenemos mapping.getInputForward que recarga la misma pgina siempre y cuando el ActionErrors no sea Nulo. Tambin podemos decidir dnde queremos que se dirija si ocurre un error con mapping.findForward(FormBeans).
STRU TS
Para definir una accin compleja debemos crear una clase que extienda al StrutsAction sta clase debe ir en el paquete Controladores.Action. Vamos a Source Packages->Controladores.Action->otros->StrutsAction
STRU TS
en la siguiente pantalla, seleccionamos en Input Resource la pagina jsp a la cual se gestionara la accin y damos Terminar.
STRU TS
STRU TS
STRU TS
Analicemos el cdigo: en esta clase debemos sobrecargar el mtodo execute que se encarga de la validacin compleja. Observen que primero obtenemos una instancia del FormBean login formulario=(Controladores.Form.login) form; luego instancio del Modelo la clase usuarios y seteo sus estados a travs de los campos del formulario, luego comparo con el usuario existente que es admin con clave 123. Si la validacin resulta exitosa redirijo a la pagina welcome. En caso de que la validacin falle seteo el error en una instancia de ActionErrors, salvo el error a travs de saveErrors(request, errors) y recargo la misma pagina que visualice los errores obtenidos.
STRU TS
Vamos a ver como queda la vista: <html:form action="login"> Usuario:<html:text property="usuario"></html:text> Clave:<html:text property="pwd"></html:text> <html:submit value="Confirmar"></html:submit> </html:form> Bien, ahora si cuando ejecutamos el proyecto todo funciona a la perfeccin. Vamos a analizar un poco el codigo: primero definimos el formulario y establecemos la accin, luego los cuadros de textos, observen que en las propiedades establecemos el mtodo de nuestro ActionBean. Pareciera estar todo perfecto pero an falta que la pagina visualice los errores. Vamos a ver como hacemos esto:
STRU TS
STRU TS
Cuando queramos ingresar un usuario que no exista se visualizarn los errores correspondientes:
STRU TS
Struts tambin puede funcionar sin utilizar los tags html agregando algunos trucos. Veamos el
este codigo combina hml estandar con tags de struts. El tag obligatorio es el html:form ya que en el action vinculamos con el Bean. Luego en los input Text en el value a travs del tag bean:write obtemos el estado (valor) del atributo usuario del ActionBean. Observar que bean:write accede a cualquier JavaBean ya sea en el modelo o los controladores.
STRU TS