Está en la página 1de 39

Framework para la capa de negocio

INTRODUCCIN

Instructor: Nataniel Marcial Chavez

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.

Struts y el Patrn MVC

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

FRA MEW ORKS

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

FRA MEW ORKS

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

FRA MEW ORKS

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

FRA MEW ORKS

NetBeans 6.5 Y Framework Struts

STRU TS

FRA MEW ORKS

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

FRA MEW ORKS


Elegimos Web Aplication y presionamos Siguiente.

Elegimos el nombre de la aplicacin, establecemos su ubicacin y presionamos el botn siguiente

STRU TS

FRA MEW ORKS

Seleccionamos el Servidor Web, en mi caso elegir Glass Fish V2.Una vez seleccionado el server presionamos siguiente.

STRU TS

FRA MEW ORKS

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

FRA MEW ORKS

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

FRA MEW ORKS

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

FRA MEW ORKS

repetimos el proceso e ingresamos Action. Nos deberia quedar de la siguiente manera:

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

FRA MEW ORKS

Creando el Modelo

STRU TS

FRA MEW ORKS

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.

FRA MEW ORKS

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

FRA MEW ORKS

Una vez que tenemos el Modelo vamos a crear un jsp que permita loguearse. nos vamos a WebPages->nuevo->JSP

le damos un nombre y luego Finalizar en mi caso voy a crear el jsp login.

STRU TS

FRA MEW ORKS

Por fin a Programar!!!

STRU TS

FRA MEW ORKS

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

FRA MEW ORKS

FRA MEW ORKS

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

FRA MEW ORKS

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

FRA MEW ORKS


Seleccionamos Struts y nos aparece 2 opciones: 1.Struts Action 2.Struts ActionForm Bean

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

FRA MEW ORKS

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

FRA MEW ORKS

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:

FRA MEW ORKS

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

FRA MEW ORKS

STRU TS

FRA MEW ORKS

Donde definimos los errores?

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

FRA MEW ORKS

Ahora veamos la validacin simple:

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).

Definir la Accin Compleja del Formulario

STRU TS

FRA MEW ORKS

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

FRA MEW ORKS


colocamos el nombre que en mi caso es login, tipeamos el nombre de la accin y damos siguiente

en la siguiente pantalla, seleccionamos en Input Resource la pagina jsp a la cual se gestionara la accin y damos Terminar.

STRU TS

FRA MEW ORKS

STRU TS

FRA MEW ORKS


Una vez hecho esto ya tenemos la clase que har la validacin compleja. En esta clase se deber validar si el usuario existe en la base de datos y permitir el acceso a la pagina. En este caso vamos a definir la existencia de un solo usuario de la siguiente manera: Como primer paso iremos al archivo de recursos de struts e incluiremos la siguiente linea: errors.impedir=Usuario inexistente luego lo siguiente:

FRA MEW ORKS

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

FRA MEW ORKS

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

FRA MEW ORKS

FRA MEW ORKS

STRU TS

Cuando queramos ingresar un usuario que no exista se visualizarn los errores correspondientes:

STRU TS

FRA MEW ORKS

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

FRA MEW ORKS

También podría gustarte