Desarrollo de Aplicaciones Web I

download Desarrollo de Aplicaciones Web I

of 164

Transcript of Desarrollo de Aplicaciones Web I

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    1/164

    Desarrollo deAplicaciones Web I

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    2/164

    2

    CARRERAS PROFESIONALES CIBERTEC

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    3/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 3

    CIBERTEC CARRERAS PROFESIONALES

    NDICE Pgina

    Presentacin 5

    Red de contenidos 6

    Unidad de aprendizaje 1: Modelo Vista Controlador Patrn MVC

    1.1 Tema 1 : Fundamentos de Struts 2 9

    1.1.1. : Arquitectura y Configuracin de aplicaciones 9

    1.1.2. : La claseAction 13

    1.1.3. : Libreras de etiquetas de Struts 2 29

    1.1.4. : Internacionalizacin I18N 51

    1.2 Tema 2 : Acceso optimizado a base de datos y otras

    caractersticas Struts 2

    63

    1.2.1. : Uso de un pool de conexiones para acceso a la fuente

    de datos

    63

    1.2.2. : Librera de Etiquetas de Struts 2 Principales

    componentes

    72

    1.2.3. : Patrn Composite View Struts 2 Tiles 87

    Unidad de aprendizaje 2: Persistencia de datos Framework IBATIS

    2.1 Tema 3 : Introduccin a IBATIS 101

    2.1.1. : IBATIS Introduccin 101

    2.1.2. : Operaciones bsicas de acceso a base de datos conIBATIS

    110

    2.2 Tema 4 : Otras operaciones con IBATIS 119

    2.2.1. : Otras operaciones y caractersticas de IBATIS 119

    2.2.2. : Tpicos avanzados de IBATIS e Integracin con

    Struts 2

    128

    Unidad de aprendizaje 3: Reportes en Sistemas empresariales

    3.1 Tema 5 : Reportes con JasperReport 139

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    4/164

    4

    CARRERAS PROFESIONALES CIBERTEC

    3.1.1. : Diseo e implementacin de reportes con la

    herramienta Ireport

    141

    3.2 Tema 6 : Struts 2 y JasperReport 142

    3.2.1. : Integracin de Struts 2 y JasperReport 142

    Anexo 1 157

    Anexo 2 167

    Anexo 3 172

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    5/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 5

    CIBERTEC CARRERAS PROFESIONALES

    PRESENTACIN

    Desarrollo de Aplicaciones Web I pertenece a la lnea de Programacin yDesarrollo de Aplicaciones. Es un curso de especialidad slo en la carrera deComputacin e Informtica. Permite al estudiante concretizar proyectos

    informticos web, aplicando conocimientos previos aprendidos en diferentescursos y poniendo en prctica la teora adquirida. De esta manera, consolidaconocimientos de diversos cursos de especialidad. Es prctico y desarrollado enlaboratorio. Se implementarn soluciones web que utilizarn los FrameworksStruts 2 e IBATIS en forma combinada.

    El manual para el curso ha sido diseado bajo la modalidad de unidades deaprendizaje, las que se desarrollan durante semanas determinadas. En cada unade ellas, hallar los logros, que debe alcanzar al final de la unidad; el tematratado, el cual ser ampliamente desarrollado; y los contenidos, que debedesarrollar, es decir, los subtemas. Por ltimo, encontrar las actividades quedeber desarrollar en cada sesin, que le permitirn reforzar lo aprendido en laclase.

    El curso es eminentemente prctico y se desarrolla ntegramente en laboratorio.En primer lugar, se inicia con el reconocimiento de los principales patrones dearquitectura de software, destacndose el patrn Model View Controller (MVC).Luego, contina con la presentacin del Framework MVC Struts 2. Se profundizaen sus principales caractersticas y componentes. Despus, se desarrollanconceptos de persistencia de datos utilizando para ello el Framework IBATIS.Por ltimo, se concluye con la elaboracin de reportes empresariales, utilizandola herramienta IReport, el lenguaje jasperReport e integrndolos a aplicacionesweb creadas con Struts 2.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    6/164

    6

    CARRERAS PROFESIONALES CIBERTEC

    RED DE CONTENIDOS

    Desarrollo de Aplicaciones Web 1

    Modelo VistaControlador Patrn MVC

    Fundamentos deStruts 2

    OtrasCaractersticas

    Struts 2

    Persistencia dedatos Framework

    IBATIS

    Introduccina IBATIS

    Otrasoperaciones

    IBATIS

    Reportes ensistemasempresariales

    Tema 5JasperReport

    Tema 6Struts 2 y

    Jasper

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    7/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 7

    CIBERTEC CARRERAS PROFESIONALES

    MODELO VISTA CONTROLADORPATRN MVC

    LOGRO DE LA UNIDAD DE APRENDIZAJE

    Al finalizar la unidad, el alumno, utilizando el framework MVC STRUTS 2,

    implementa una aplicacin web que contenga, en su estructura, el componenteAction, las principales etiquetas del framework y acceso a base de datos atravs de un pool de conexiones.

    Al finalizar la unidad, el alumno se integra a un equipo de trabajo que refleja ensu estructura los roles de un equipo de proyecto de desarrollo de software.

    TEMARIO

    1.1 Tema 1 : Fundamentos de Struts 2

    1.1.1. : Arquitectura y Configuracin de aplicaciones1.1.2. : La claseAction

    1.1.3. : Libreras de etiquetas de Struts 2

    1.1.4. : Internacionalizacin I18N

    1.2 Tema 2 : Acceso optimizado a base de datos y otras caractersticas de

    Struts 2

    1.2.1. : Uso de un Pool de conexiones para acceso a la fuente de datos1.2.2. : Librera de Etiquetas de Struts 2 Principales componentes.

    1.2.3. : Patrn Composite View Struts 2 Tiles

    ACTIVIDADES PROPUESTAS

    Los alumnos implementan una aplicacin web bsica, utilizando las principalescaractersticas del framework MVC Struts 2.

    1.1 Fundamentos de Struts 2

    UNIDAD DE

    APRENDIZAJE

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    8/164

    8

    CARRERAS PROFESIONALES CIBERTEC

    Struts 2 es un framework que implementa el patrn de arquitectura MVC en Java.ste organiza de manera independiente las capas: Model (Objetos del Modelo delNegocio), View (interfaz con el usuario u otro sistema) y la capa Controller(controlador del flujo de la aplicacin. Se muestra, a continuacin, el esquemabsico de funcionamiento de esta arquitectura.

    La capa Model en Struts 2 inicia con los componentes Action. Debajo de stos, setendrn diversos componentes:

    9 Services (Lgica pura de negocio)9 DAOs (objetos de persistencia de datos), entre otros.

    Se muestra, a continuacin, el esquema bsico de la arquitectura MVCimplementado por el frameworkStruts 2.

    Figura 1.1

    Una caracterstica tpica de la capa View de Struts 2 es el uso de unoscomponentes especiales denominados Results. stos normalmente sonrepresentados por una pgina JSP; sin embargo, puede constituir,tambin, flujos de bytes, objetos del frameworkTiles, etc.

    1.1.1. Arqu itectura y conf iguracin de aplicaciones

    La arquitectura MVC funciona en Struts 2 bsicamente de la siguientemanera: a travs de un navegador se genera una solicitud. sta escapturada por la capa Controller (implementada por el componenteFilterDispathcher representado por un nico filtro especializado). Estefiltro analizar la solicitud y verificar si el componente invocado se

    encuentra registrado en el archivo de configuracin XML de Struts 2. stetiene por defecto el nombre struts.xml.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    9/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 9

    CIBERTEC CARRERAS PROFESIONALES

    El componente invocado, normalmente unAction de Struts 2, instanciary/o utilizar diversos objetos de negocio para concretar la tarea solicitada.Segn el resultado que retorne el componente Action, la capa Controllerderivar la respuesta generada a un objeto Result (normalmente unapgina JSP).

    1.1.1.1. Ejercicio 1: Aplicacin web bsica de Struts 2

    Se probar una aplicacin web con los componentes mnimospara el correcto funcionamiento del framework Struts 2.

    a) Paso 1: mportar el archivo struts2-blank-2.1.8.1.war

    Al descargar el framework struts2 ,se tendr acceso a una

    aplicacin web de prueba, que cuenta con las caractersticasmnimas para que pueda ser ejecutada. Esta aplicacin vieneempaquetada dentro del archivo struts2-blank-2.1.8.1.war. Luego,de importarla, se visualizar un proyecto web, tal como semuestra a continuacin:

    Notas:

    1) El principal archivo de configuracin del Framework es elarchivo struts.xml. En l, se registrarn sus principales

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    10/164

    10

    CARRERAS PROFESIONALES CIBERTEC

    componentes. Se inicia esta sesin con el registro de la claseAction.

    2) Puede observar las libreras mnimas con las que todoproyecto basado en Struts 2 debera contar. Dentro de ellas,destaca el archivo struts2-core-2.1.8.1.jar.

    b) Paso 2: Revisar el archivo web.xml

    Notas:

    1) Note el registro del filtro controlador del framework Struts 2.Este componente atrapar todas las solicitudes (request)generadas desde un cliente, dado que tiene como alias /*.

    c) Paso 3: Ejecutar la aplicacin

    St r ut s Bl ank

    struts2

    or g. apache. st r ut s2. di spat cher . ng. f i l t er . St r ut sPr epar eAndExecut eFi l t er

    struts2

    / *

    i ndex. ht ml

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    11/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 1

    CIBERTEC CARRERAS PROFESIONALES

    d) Paso 4: Excelente!, ha culminado el proceso de probarexitosamente la aplicacin web struts2-blank-2.1.8.1

    1.1.2. La claseAction

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    12/164

    12

    CARRERAS PROFESIONALES CIBERTEC

    Un action es, en Struts 2, el primer componente de la capa Model dentrode la arquitectura MVC.

    Un actions realiza bsicamente tres pasos dentro de una aplicacin web.En primer lugar, recibe las solicitudes (request) enviadas por un cliente yrealiza el trabajo inicial para atenderla. Es el componente que interactacon la capa controladora y la capa view. En segundo lugar, acta comoun transportador natural de datos entre el objeto request y loscomponentes de la capa view, esto gracias a las caractersticas detransferencia automtica de datos que tiene struts 2 entre estos.Finalmente, apoya al framework determinando qu result ser retornadoen la respuesta que se genere a la solicitud realizada.

    Se detalla, a continuacin, un ejercicio, en el cual se apreciarn losprincipales componentes de la arquitectura MVC utilizando Struts 2.

    1.1.2.1. Ejercicio 1: Funcionalidad de Logueo Versin 1

    Se simular la funcionalidad de logueo con los componentesbsicos del framework Struts 2 y sin acceso a base de datos.

    a) Paso 1: Copiar las principales libreras y archivos deconfiguracin al proyecto web funcionalidadLogueov1_Inicial

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    13/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 3

    CIBERTEC CARRERAS PROFESIONALES

    Notas:

    1) Observe que solo se puede copiar el archivo struts.xmldentro de la carpeta src, utilizando la vista Navigator.

    2) Distinga las principales libreras y archivos de configuracinen las ubicaciones correctas: libreras en la carpeta lib yarchivo de configuracin struts.xml en la carpeta src junto alos archivos fuente.

    b) Paso 2: Registrar el filtro controlador de Struts 2 dentro delarchivo web.xml

    c) Paso 3: Crear el primer componente Struts 2 de la aplicacin,la clase LogueoAction

    Notas:

    1) Agregue el paquete aprendamos.java.action y, dentro de l,genere la clase LogueoAction.

    La clase LogueoAction debe contar con la siguiente lgica:

    struts2

    or g. apache. st r ut s2. di spat cher . ng. f i l t er . St r ut sPr epar eAndExecut eFi l t er

    struts2/ *

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    14/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    15/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 5

    CIBERTEC CARRERAS PROFESIONALES

    e) Paso 5: Ejecutar la aplicacin web

    Notas:

    1) Se puede observar en el url que el alias invocado es logueo.Recuerde que en Struts 2 todas las solicitudes son atrapadas porel filtro controlador del framework. ste invocar al actionrespectivo sobre la base del registro realizado en el archivostruts.xml.

    f) Paso 6: Bien!, ha culminado la funcionalidad de logueo

    versin 1

    1.1.2.2. Ejercicio 2: Funcionalidad de Logueo Versin 2

    Se efecta la funcionalidad de logueo con los componentesbsicos del framework e implementando los patrones de diseoDAO (Data Access Object), Service y Business Delegate.

    a) Paso 1: Modificar la clase MySqlClienteDAO y verificar sucorrecta relacin con las clases que implementan el patrn de

    diseo DAO.

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    16/164

    16

    CARRERAS PROFESIONALES CIBERTEC

    Dentro de la clase MySqlClienteDAO, debe modificar el mtodobuscaPorUsuario. Complete el cdigo con la lgica mostrada acontinuacin:

    9 El patrn de diseo DAO (Data Access Object) permite

    que un componente pueda acceder a diferentes orgenesde datos de manera independiente y transparente. Eneste proyecto, se cuentan con componentes DAO paraacceder al motor de base de datos MySql.Adicionalmente, se podran contar con DAOs paraacceder a otros orgenes de datos, tales como Oracle,Microsoft SQL Server, archivos XML, etc.

    9 Por cada entidad dentro del modelo de datos, se debecrear un componente DAO.

    Verifique si existe la interface ClienteDAO. sta debe serimplementada por la clase MySqlClienteDAO:

    / / ej ecut amos

    Resul t Set r s=pst . execut eQuery( ) ;

    / / si hay dat os, r ecuper amos un r egsi t r oif( r s . next ( ) ) {

    obj Cl i ent eDTO = new Cl i ent eDTO( ) ;obj Cl i ent eDTO. set Usuar i o( r s. get St r i ng( 1) ) ;obj Cl i ent eDTO. set Cl ave( r s. get St r i ng( 2) ) ;obj Cl i ent eDTO. set Nombr e( r s. get St r i ng( 3) ) ;obj Cl i ent eDTO. set Suel do( r s. get Doubl e( 4) ) ;obj Cl i ent eDTO. set Sexo( r s. get St r i ng( 5) ) ;obj Cl i ent eDTO. set Fecnac( r s. get Dat e( 6) ) ;

    }cn. cl ose( ) ;

    public interface Cl i ent eDAO {

    public int r egi st r aCl i ent e( Cl i ent eDTO obj Cl i ent e) throwsExcept i on;

    public Cl i ent eDTO buscaPor Usuar i o( St r i ng usuar i o) throwsExcept i on;

    . . .}

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    17/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    18/164

    18

    CARRERAS PROFESIONALES CIBERTEC

    Notas:

    1) El registro de la clase MySqlClienteDAO es la creacin de unmtodo abstracto en la clase DAOFactory que retorna a lainterface que implementa MySqlClienteDAO.

    b) Paso 2: Crear la clase LogueoService y la interfaceLogueoService_I

    public class LogueoServi ce implements LogueoSer vi ce_I {

    / / Ref erenci amos a l a f abr i ca de daos par a mysql DAOFact or y f abri ca = DAOFact or y. getDAOFactory( DAOFact ory. MYSQL) ;

    / / Ref er enci amos al dao de l a ent i dad cl i ent eCl i ent eDAO obj Cl i ent eDAO = f abr i ca. get Cl i ent eDAO( ) ;

    public Cl i ent eDTO val i daUsuar i o( Cl i ent eDTO cl i ent e) throws Except i on {

    / / aqui podr i amos t ener mas l ogi ca

    return obj Cl i ent eDAO. buscaPor Usuar i o( cl i ent e. get Usuar i o( ) ) ;

    }

    }

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    19/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 9

    CIBERTEC CARRERAS PROFESIONALES

    Notas:

    1) Agregue el paquete aprendamos.java.action y dentro del genere la clase LogueoAction.

    2) Un servicio es un componente, que pertenece a la capaModel del patrn de diseo MVC. Representa, en laprogramacin, el inicio de la lgica de negocio. Por cada casode uso de sistema identificado en la aplicacin, se debeimplementar un servicio. ste puede invocar a uno o ms DAOs.

    Debe exponer las operaciones de la clase LogueoService; porlo tanto, debe crear la interface LogueoService_I

    c) Paso 3: Crear la clase PaqueteBusinessDelegate

    public interface LogueoServi ce_I {

    public abstract Cl i ent eDTO val i daUsuar i o( Cl i ent eDTO cl i ent e)throws Except i on;

    }

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    20/164

    20

    CARRERAS PROFESIONALES CIBERTEC

    Notas:

    1) Dentro del paquete aprendamos.java.service, genere la clasePaqueteBusinessDelegate.

    2) Por cada paquete de un modelo de anlisis, se debe tenerun componente BusinessDelegate. Esta clase ser invocada

    por los actions y retornar componentes tipo Service.

    d) Paso 4: Invocar los componentes de lgica de negocio, desdela clase LogueoService, y crear la sesin web.

    Genere, dentro de la clase LogueoAction, el atributo mensajepara poder visualizar posibles mensajes de error en la capa depresentacin. No debe olvidar crear los mtodos setter y getterpara el nuevo atributo.

    public class Paquet eBusi nessDel egat e {

    private Paquet eBusi nessDel egate( ) {/ / TODO Aut o- gener at ed const r uct or st ub

    }

    public static LogueoSer vi ce_I getLogueoServi ce( ) {return new LogueoSer vi ce( ) ;

    }

    / / agr egar aqui mas l l amadas a ot r os ser vi ci os

    }

    public class LogueoAct i on {

    private Str i ng usuar i o;private Str i ng cl ave;private Str i ng mensaj e;

    public St r i ng get Mensaj e( ) {return mensaj e;

    }public voidsetMensaj e(St r i ng mensaj e) {

    this. mensaj e = mensaj e;}

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    21/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    22/164

    22

    CARRERAS PROFESIONALES CIBERTEC

    Recuerde que debe utilizarExpression Language (EL) en el JSPlogueo.jsp para visualizar el mensaje de error definido en laclase LogueoAction.

    Recuerde que debe utilizarExpression Language (EL) en el JSPbienvenida.jsp para visualizar los datos del cliente cargados enla sesin web.

    e) Paso 5: Ejecutar la aplicacin

    Primero, ingrese un usuario invlido.

    ${r equest Scope. mensaj e}

    ${r equest Scope. mensaj e}

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    23/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 2 3

    CIBERTEC CARRERAS PROFESIONALES

    Luego, ingrese el usuario correcto, pero la clave equivocada.

    Por ltimo, ingrese los datos correctamente.

    Excelente!, ha culminado la funcionalidad de logueo versin 2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    24/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    25/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    26/164

    26

    CARRERAS PROFESIONALES CIBERTEC

    d) Paso 4: Modificar el JSP logueo.jsp

    Debe referenciar a la librera de etiquetas de struts 2.

    Transforme las etiquetas html en sus equivalentes de Struts 2.

    ${r equest Scope. mensaj e}

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    27/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 2 7

    CIBERTEC CARRERAS PROFESIONALES

    9 Note que se han modificado los nombres de los camposusuario y clave por cliente.usuario y cliente.clave.

    e) Paso 5: Referenciar a los campos cliente.usuario ycliente.clave dentro de la clase LogueoAction

    Agregue el atributo cliente en la clase LogueoAction.

    Modifique el mtodo execute.

    Notas:

    public class LogueoAct i on extends Act i onSupport {

    private Cl i ent eDTO cl i ente=null;

    public Cl i ent eDTO get Cl i ent e( ) {return cl i ente;}public voidset Cl i ent e( Cl i ent eDTO cl i ent e) {

    this. cl i ente = cl i ent e;}

    public St r i ng execut e( ) {St r i ng vi sta="exi t o" ;

    Syst em. out. pr i nt l n( "dent r o de nuest r o pr i mer act i on" ) ;Syst em. out. pr i nt l n( this. cl i ente. get Usuar i o( ) ) ;Syst em. out. pr i nt l n( this. cl i ente. get Cl ave( ) ) ;

    / / i nvocamos a nuest r o ser vi ci o ( l ogi ca de negoci o) LogueoSer vi ce_I l ogueoservi ce =

    Paquet eBusi nessDel egate. getLogueoService( ) ;

    Cl i ent eDTO usuar i oCandi dat o=

    new Cl i ent eDTO( ) ;

    usuar i oCandi dat o. set Usuar i o( this. get Cl i ent e( ) . get Usuar i o( ) ) ;

    Cl i ent eDTO obj Usuar i o=null;try {

    obj Usuar i o =l ogueoser vi ce. val i daUsuar i o( usuar i oCandi dat o) ;

    } catch ( Except i on e) {/ / TODO Aut o- generat ed cat ch bl ocke. pr i nt St ackTr ace( ) ;

    }

    if( obj Usuar i o! =null) {

    if ob Usuar i o. et Cl ave . e ual s this. et Cl i ent e . et Cl ave

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    28/164

    28

    CARRERAS PROFESIONALES CIBERTEC

    1) Los datos son obtenidos a partir del nuevo atributocliente.

    2) Se obtienen nuevamente los datos a partir del atributocliente. Esta vez invocando al mtodo getCliente().

    f) Paso 6: Ejecutar la aplicacin

    Primero, ingrese un usuario invlido.

    Luego, ingrese el usuario correcto, pero la clave equivocada.

    Por ltimo, ingrese los datos correctamente.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    29/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 2 9

    CIBERTEC CARRERAS PROFESIONALES

    g) Paso 7: Muy buen trabajo!

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    30/164

    30

    CARRERAS PROFESIONALES CIBERTEC

    1.1.3.2. Ejercicio 2: Funcionalidad Registro de cliente

    Se implementa la funcionalidad indicada, haciendo uso de delas utilidades incluidas en el framework para procesar archivos(en el ejemplo la imagen del cliente) a travs de un formularioHTML y gestionarlos dentro de la aplicacin web implementada.

    a) Paso 1: Importar el proyecto webFuncionalidadRegistraImagen_Inicial.war

    Notas:

    1) Note que, dentro del proyecto, cuenta con el script de basede datos FacilitoBaseDatos.sql. En l, se debe verificar que latabla tbcliente cuenta con un tipo de dato adecuado paraalmacenar un archivo de cualquier modelo.

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    31/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 3 1

    CIBERTEC CARRERAS PROFESIONALES

    b) Paso 2: Verificar que la tabla tbcliente cuente con un campode tipo longblog

    Notas:

    1) Observe que, en el campo foto, se almacenar la imagenasociada al cliente que registrar en su aplicacin web.

    1

    CREATE DATABASE I FNOT EXISTS f aci l i t o;USE f aci l i t o;

    - - - - Def i ni t i on of t abl e `tbcl i ent e`- -

    DROP TABLE I F EXISTS `t bcl i ent e`;CREATE TABLE `t bcl i ent e` (

    `nombr e` varchar( 100) DEFAULTNULL,

    `suel do`double

    DEFAULT

    NULL

    ,`sexo` char( 1) DEFAULTNULL,`f ecnac` datet i me DEFAULTNULL,`usuar i o` varchar( 15) NOTNULL DEFAULT ' ' ,`cl ave` varchar( 15) NOTNULL DEFAULT ' ' ,

    `f ot o` l ongbl ob DEFAULTNULL,PRIMARY KEY ( `usuar i o`)

    ) ENGI NE=I nnoDB AUTO_I NCREMENT=5 DEFAULTCHARSET=l at i n1;

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    32/164

    32

    CARRERAS PROFESIONALES CIBERTEC

    c) Paso 3: Modificar el archivo nuevoCliente.jsp

    Dentro de la pgina nuevoCliente.jsp, se debe modificar elformulario HTML. Complete el cdigo con la lgica mostrada acontinuacin:

    Notas:

    1) Debe utilizar el atributo enctype del formulario con el valormultipart/form-data. De esta manera,se habilita el formulariopara soportar campos tipo File.

    2) Agregue la etiqueta file de Struts 2., cuyo nombre escliente.foto, es decir, har referencia a un objeto de nombrecliente que cuente con un atributo llamado foto.

    Regi st r o de Cl i ent es

    . . .

    . . .

    Fot ogr af a:

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    33/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    34/164

    34

    CARRERAS PROFESIONALES CIBERTEC

    Notas:

    1) Se ha definido la variable cliente de tipo ClienteDTO. Demanera automtica, el Framework instancia el objeto y almacenaen l los datos que llegan desde la pgina nuevoCliente.jsp.Note que en la pgina nuevoCliente.jsp todos los campos llevancomo prefijo en el nombre la palabra cliente, la cual hace

    referencia a la variable definida en ClienteAction.

    2) El objeto servicioCliente es un componente de la lgica denegocio y expone las operaciones que puede realizar la claseClienteAction.

    3) Note que el mtodo registraCliente recibe como parmetro elobjeto cliente. Dentro de l, deben existir los campos necesariospara poder gestionar la imagen del cliente seleccionada en lapgina nuevoCliente.jsp

    4) Una vez registrado el nuevo cliente se blanquea el atributonombre del objeto cliente y se invoca la funcionalidad de listadoantes de retornar a la vista respectiva.

    . . .Cl i ent eSer vi ce_I servi ci oCl i ent e =

    Paquet eBusi nessDel egat e. getClienteService( ) ;

    / / cr eamos el met odo regi st r apublic St r i ng regi str a( ) {

    St r i ng vi sta="exi t o" ;

    try {

    ser vi ci oCl i ent e. regi str aEl Cl i ent e( cl i ente) ;

    / / l o r et or nado por el ser vi ci o l o asi gnamos al at r i but o

    de t i po Li st a de cl i ent escl i ente. set Nombre( "" ) ;

    cl i ent es=ser vi ci oCl i ent e.l i st aCl i ent esPor Nombr e( cl i ente. getNombr e( ) ) ;

    } catch ( Except i on e) {/ / TODO Aut o- gener at ed cat ch bl ocke. pr i nt St ackTr ace( ) ;

    }

    return vi sta;

    }

    2

    3

    4

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    35/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 3 5

    CIBERTEC CARRERAS PROFESIONALES

    f) Paso 6: Modificar la clase ClienteDTO

    La clase ClienteDTO debe contar con la siguiente lgica:

    Notas:

    1) Dado que en la pgina nuevoCliente.jsp se ha definido uncampo tipo file con el nombre cliente.foto, es necesariodefinirlo en la clase ClienteDTO, de modo que se puedarecepcionar la imagen enviada desde el formulario.

    2) Es necesario, tambin, por requerimiento del Framework,definir los campos fotoContentType y fotoFileName.Ambos se cargarn de manera automtica yproporcionarn importante informacin relacionada con lavariable foto.

    Adicionalmente, se define la variable isFoto de tipoInputStream, debido a que sta ser utilizada por elcomponente MySqlClienteDAO en el registro de laimagen en la tabla tbcliente.

    public class Cl i ent eDTO implements Ser i al i zabl e {

    private static final long serialVersionUID = 1L;

    private Str i ng nombr e;private Dat e f ecnac;private Str i ng sexo;private double suel do;private Str i ng usuar i o;private Str i ng cl ave;

    private F i l e fo to;

    private Str i ng f otoCont ent Type;private Str i ng f otoFi l eName;

    private I nput St r eam i sFot o;

    public St r i ng get Fot oCont ent Type( ) {return f otoCont ent Type;

    }public voidset Fot oCont ent Type(St r i ng f ot oCont ent Type) {

    this. f otoCont ent Type = f ot oCont ent Type;}

    . . .

    2

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    36/164

    36

    CARRERAS PROFESIONALES CIBERTEC

    g) Paso 7: Modificar la clase ClienteService

    La clase ClienteService debe contar con la siguiente lgica en elmtodo registraElCliente:

    Notas:

    1) Si el cliente seleccion en la pgina nuevoCliente.jsp unaimagen, el atributo foto debe ser diferente del valor null.De ser el caso, se crea un objeto temporal de tipoInputStream en base al atributo foto. Luego, se asigna elobjeto tempo al atributo isFoto (utilizado en la claseMySqlClienteDAO para grabar la imagen en la tablatbcliente).

    9 Recuerde que el mtodo registraElCliente debe serexpuesto registrndolo en la interfaceClienteService_I. La clase ClienteService implementala interface ClienteService_I.

    public int r egi st r aEl Cl i ent e( Cl i ent eDTO obj Cl i ent e) throws Except i on {

    / / aqui agr emos un poco de l ogi ca/ / como sabemos que el at r i but o i sFot o est a l l egando nul o/ / l o gener amos a par t i r del at r i but o f ot o ( de t i po Fi l e)

    if( obj Cl i ent e. get Fot o( ) ! =null) {I nput St r eam t empo =new Fi l eI nput St r eam( obj Cl i ent e. get Fot o( ) ) ;obj Cl i ent e. set I sFot o( t empo) ;

    }

    return obj Cl i ent eDAO. regi str aCl i ent e( obj Cl i ent e) ;

    }

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    37/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 3 7

    CIBERTEC CARRERAS PROFESIONALES

    h) Paso 8: Modificar la clase MySqlClienteDAO

    La clase MySqlClienteDAO debe implementar la siguiente lgicaen el mtodo registraCliente:

    Notas:

    1) Recuerde que para insertar una fecha en base de datosdebe convertir las fechas de tipo java.util.Date al tipojava.sql.Date.

    2) Por defecto, se asume que no insertar ninguna imagenen el campo foto:

    public int r egi st r aCl i ent e( Cl i ent eDTO obj Cl i ent e) throws Except i on{

    int r esul t ado =0;

    Connect i on cn = MySql DBConn. obtenerConexion( ) ;

    St r i ng sql ="i nser t i nt o t bcl i ent e( nombr e, suel do, sexo, f ecnac, " +

    "usuari o, c l ave, f ot o) val ues ( ?, ?, ?, ?, ?, ?, ?)" ;

    PreparedSt atement pst = cn. prepareSt atement ( sql ) ;

    / / asi gnamos val or es a l as i nt er r ogant espst . set St r i ng( 1, obj Cl i ent e. get Nombr e( ) ) ;pst . set Doubl e( 2, obj Cl i ent e. get Suel do( ) ) ;pst. set St r i ng( 3, obj Cl i ent e. get Sexo( ) ) ;

    / / no ol vi demos i nser t ar l a f echa : ) j ava. sql . Dat e bdf echa=

    new j ava. sql . Dat e( obj Cl i ent e. get Fecnac() . get Ti me( ) ) ;pst . set Dat e( 4, bdf echa) ;

    pst. set St r i ng( 5, obj Cl i ent e. get Usuar i o( ) ) ;pst. set St r i ng( 6, obj Cl i ent e. get Cl ave( ) ) ;

    pst . set Bi nar ySt r eam( 7, null, 0) ;

    if( obj Cl i ent e. get Fot o( ) ! =null) {pst . set Bi nar ySt r eam( 7,obj Cl i ent e. get I sFot o( ) ,obj Cl i ent e. get I sFot o( ) . avai l abl e( ) ) ;

    }

    / / ej ecut amos l a sent enci ar esul t ado = pst . execut eUpdat e( ) ;

    cn. cl ose( ) ;

    return r esul t ado;

    }

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    38/164

    38

    CARRERAS PROFESIONALES CIBERTEC

    pst.setBinaryStream(7, null,0);

    Sin embargo, si el valor del atributo es diferente de null,registra la imagen, tomando como base al atributo de tipoInputStream isFoto:

    pst.setBinaryStream(7,objCliente.getIsFoto(),objCliente.getIsFoto().available());

    9 El mtodo available() de un objeto de tipoInputStream retorna la cantidad de bytes (el tamao),en este caso, de la imagen a insertar en la tabla. Deesta manera, se enva como tercer parmetro delmtodo setBinaryStream().

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    39/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 3 9

    CIBERTEC CARRERAS PROFESIONALES

    i) Paso 9: Ejecutar la aplicacin web

    Seleccione del listado de Clientes el enlace Nuevo Cliente:

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    40/164

    40

    CARRERAS PROFESIONALES CIBERTEC

    En la pantalla mostrada, ingrese los campos solicitados.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    41/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 4 1

    CIBERTEC CARRERAS PROFESIONALES

    Al hacer clic sobre el botn Registrar, se grabar un nuevoregistro en la base de datos y se visualizar nuevamente ellistado de Clientes.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    42/164

    42

    CARRERAS PROFESIONALES CIBERTEC

    Se puede verificar el correcto registro de la imagen, utilizando laherramienta MySql Query Browser:

    Notas:

    1) Al hacer clic sobre la lupa, visualizar en una nueva ventanala imagen registrada en la tabla tbcliente.

    j) Paso 10: Bien!, ha culminado la funcionalidad registra imagenexitosamente.

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    43/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 4 3

    CIBERTEC CARRERAS PROFESIONALES

    1.1.4. Internacionalizacin I18n

    Tradicionalmente, los desarrolladores de software se centran en construiraplicaciones que resuelvan en forma inmediata problemas de negocio.Mientras hacen eso es fcil y a veces necesario realizar asunciones acercadel lenguaje o lugar de residencia de los usuarios. En muchos casos, estasasunciones son vlidas y no hay preguntas sobre quin ser la audiencia.Sin embargo, es probable, alguna vez, que se deba reconstruir unaaplicacin, porque estas asunciones fueron incorrectas.

    Internacionalizacin (I18N) es el proceso de disear su software consoporte en tiempo real de mltiples lenguajes y regiones. Dada estacaracterstica, no ser necesario redisear nuestras aplicaciones cada vezque se necesite soporte para un nuevo lenguaje. Una aplicacin que dicetener soporte para internacionalizacin debe contar con las siguientescaractersticas:

    Puede soportar lenguajes adicionales sin requerir cambios adicionalesde cdigo.

    Los elementos de texto, mensajes e imgenes son almacenadosexternamente al cdigo fuente.

    Dependencia culturales de datos, tales como fecha y hora, y valoresdecimales son correctamente formateados para el lenguaje del usuarioy localizacin geogrfica.

    Caracteres no estndares son soportados. La aplicacin puede ser fcilmente adaptada a nuevos lenguajes y

    regiones.

    Cuando se internacionaliza una aplicacin, no se puede producirla paraelegir qu opciones desea soportar. Se deben implementar todas ellas o elproceso colapsar. Si un usuario visita un sitio web y todos sus textos,imgenes y botones estn en el lenguaje correcto, pero los nmeros yfechas no son formateados correctamente, sta ser una experienciadesagradable para el usuario.

    Asegurar que una aplicacin puede soportar mltiples lenguajes y regionessolo es el primer paso. Se deben crear versiones localizadas de laaplicacin para cada lenguaje especfico y regin que debe soportar.Afortunadamente, aqu es donde los beneficios de I18N en la plataformajava se ejecutan. Para aplicaciones que estn siendo apropiadamenteinternacionalizadas, todo el trabajo para soportar nuevos lenguajes onaciones, son externas al cdigo fuente.

    Una clase locale es una regin (usualmente geogrfica, pero nonecesariamente) que comparte personalizaciones, cultura y lenguaje.Aplicaciones que son escritas para una sola localizacin son comnmentereferenciadas como miopes.

    Localizacin (L10N) es el proceso de adaptar su aplicacin, la cual ha sidointernacionalizada apropiadamente con la especfica. Para aplicaciones

    donde el soporte I18N no ha sido planeado o incorporado, esto usualmentesignifica cambios de texto, imgenes y mensajes que son incluidos dentro

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    44/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    45/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 4 5

    CIBERTEC CARRERAS PROFESIONALES

    idiomas italiano (it), portugus (pt) y espaol. El primero estconfigurado en el archivo sin indicador de idioma. Note que losprefijos it y pt o cualquier otro que se desea usar deben sercdigos ISO 639-1.

    b) Paso 2: Editar los archivos .properties. Se crearn, comoejemplos, las keys que sern utilizadas en la pginabienvenida.jsp.

    Defina las keys para el idioma portugus en el archivoMisRecursos_pt.properties

    #keys par a l a pagi na de bi enveni dakey. usuar i o = Usur i o:key. nombre = Nome:key. f ecnac = dat a de nasci ment o:key. sexo = sexo:key. sal udo = Bem- vi ndo Caro usur i o, seus dados so:

    #keys para el menumenu. bi enveni da = I r pgi na i ni ci al menu. l ogueo = V par a a ent r adamenu. l i st ado = I r para a l i s t a

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    46/164

    46

    CARRERAS PROFESIONALES CIBERTEC

    Defina las keys para el idioma italiano en el archivoMisRecursos_it.properties

    Defina las keys para el idioma espaol en el archivoMisRecursos.properties (archivo de recursos por defecto).

    #keys par a l a pagi na de bi enveni dakey. usuar i o = Ut ent e:key. nombre = Nome:key. f ecnac = Dat a di Nasci t o:key. sexo = sesso:key. sal udo = Benvenut o Caro ut ent e, i dat i sono:

    #keys para el menumenu. bi enveni da = Vai al l a pagi na di benvenut omenu. l ogueo = I r al l oguei ni menu. l i st ado = I r al l i stadi ni

    #keys par a l a pagi na de bi enveni dakey. usuar i o = Usuar i o:key. nombre = Nombr e:key. f ecnac = Fecha de Naci mi ent o:key. sexo = Sexo:

    key. sal udo= Bi enveni do est i mado usuar i o, sus datosson:

    #keys para el menumenu. bi enveni da = I r a l a pgi na de Bi enveni damenu. l ogueo = I r al l ogueomenu. l i st ado = I r al l i stado

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    47/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 4 7

    CIBERTEC CARRERAS PROFESIONALES

    Notas:

    1) El archivo de recursos por defecto es aquel que no tienecdigo ISO asociado a un idioma en particular. Cuando seseleccione en la aplicacin web un idioma que no haya sidoconfigurado en ningn archivo de recursos,automticamente, struts 2 recupera las keys del archivo derecursos por defecto.

    c) Paso 3: Modificar el archivo cabecera.jsp

    Notas:

    1) Struts 2 soporta cuenta con un parmetro especial llamadorequest_locale. Cuando se utiliza ste, de maneraautomtica, se configura sul valor como el idioma actual de laaplicacin web.

    2) Es recomendable utilizar variables al referenciar cualquierrecurso dentro de una aplicacin web. En el ejemplo, en

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    48/164

    48

    CARRERAS PROFESIONALES CIBERTEC

    lugar de colocar el nombre de la aplicacin web, se realiza losiguiente:

    FuncionalidadRegistraImagenI18N_Inicial

    Se coloca un expression language equivalente:${pageCont ext . r equest . cont ext Pat h}

    d) Paso 4: Registrar el action a_bienvenida en el archivostruts.xml

    Notas:

    1) Note que el action a_bienvenida es solo un action de atajoque invoca automticamente a la pgina bienvenida.jsp. Sepuede crear dentro de la aplicacin mltiples actions de atajopara invocar a travs de links a las pginas JSP.

    e) Paso 5: Recuperar las keys del men y de la pgina de

    bienvenida, utilizando la etiqueta de struts 2.

    1

    . . .

    / bi enveni da. j sp

    / l ogueo. j sp

    . . .

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    49/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 4 9

    CIBERTEC CARRERAS PROFESIONALES

    Modifique el archivo menu.jsp

    Notas:

    1) Debe usar la etiqueta para referenciar a las keys delarchivo de recursos. Es importante recordar que para utilizarlas etiquetas de struts 2 se debe referenciar la librera,

    utilizando la siguiente directiva:

    1

    . . .

    . . .

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    50/164

    50

    CARRERAS PROFESIONALES CIBERTEC

    Modifique el archivo bienvenida.jsp

    1

    . . .

    ${sessi onScope. b_usuar i o. usuar i o}

    ${sessi onScope. b_usuar i o. nombr e} ${sessi onScope. b_usuar i o. f ecnac}

    ${sessi onScope. b_usuar i o. sexo}

    . . .

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    51/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 5 1

    CIBERTEC CARRERAS PROFESIONALES

    f) Paso 6: Ejecutar la aplicacin web

    Ingrese a la intranet a travs de la pgina de logueo.

    Se debe visualizar la pantalla de bienvenida y los enlaces a losidiomas definidos en la pgina cabecera.jsp. Seleccione la

    bandera italiana.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    52/164

    52

    CARRERAS PROFESIONALES CIBERTEC

    Visualizar la siguiente pantalla con el men y la bienvenida enidioma italiano. Seleccione la bandera de Brasil.

    Se visualizar la siguiente pantalla con el men y la bienvenidaen idioma portugus. Finalmente, seleccione la bandera delPer.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    53/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 5 3

    CIBERTEC CARRERAS PROFESIONALES

    Se visualizar la siguiente pantalla con el men y la bienvenidaen idioma castellano.

    g) Paso 7: Bien!, ha culminado la funcionalidad registraimagen con I18n exitosamente.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    54/164

    54

    CARRERAS PROFESIONALES CIBERTEC

    1.2 Acceso optimizado a base de datos y otras caractersticasStruts 2

    1.2.1. Uso de un Pool de conexiones para acceso a base de datos

    Un Pool de Conexiones (jdbc) es un conjunto de conexiones preinstanciadasque sern "prestadas" a los threads (hilos) de ejecucin a medida que estoslo requieran para que la usen y luego la devuelvan al pool.

    En el caso de las aplicaciones abiertas en Internet o con gran cantidad deusuarios potenciales, el anlisis es el mismo. El recurso es la conexin a labase de datos. Se tendr un conjunto de n conexiones para asignarlas (oprestarlas) a los hilos que lo requieran.

    Lo recomendable al usar un Pool de Conexiones es que se optimice lasconsultas a la base de datos para tener mayor rapidez.

    1.2.1.1. Ejercicio 1: Funcionalidad Registra Imagen Pool

    Se implementa la funcionalidad indicada haciendo uso de unpool de conexiones de MySql para optimizar el acceso a base dedatos.

    a) Paso 1: Importar el proyecto webFuncionalidadRegistraImagenPool_Inicial.war

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    55/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 5 5

    CIBERTEC CARRERAS PROFESIONALES

    Notas:

    1) Observe que, dentro del proyecto, cuenta en la carpetaMETA-INF con el archivo context.xml. En l, se debe crear laconfiguracin del pool de conexiones que utilizar para acceder

    a una base de datos.

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    56/164

    56

    CARRERAS PROFESIONALES CIBERTEC

    b) Paso 2: Editar el archivo context.xml y configurar el pool deconexiones.

    Notas:

    1) jdbc/sisepuede es el nombre del pool de conexiones queutilizar para referenciar a la base de datos.

    2) El nmero mximo de conexiones activas es 100 en elejemplo. Este valor debe ser calculado para cada aplicacinweb sobre la base de la experiencia y el trfico quenormalmente se soporte. En algunos casos, se tendr lanecesidad de incrementar o redecir este valor por defecto.

    3) El mximo tiempo de espera, 10000, est expresado enmilisegundos. En este ejemplo, se esperar, como mximo,10 segundos para obtener una conexin disponible (de las100 existentes). De no conseguirla, se producira un error.

    1

    un pool de conexi ones - - >

    2

    3

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    57/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 5 7

    CIBERTEC CARRERAS PROFESIONALES

    c) Paso 3: Modificar el archivo MySqlDbConn.java

    Notas:

    3) Debe importar el paquete javax.naming.*, ya que en l seencuentran las clases para utilizar JNDI y acceder al pool deconexiones.

    4) Debe importar el pauete javax.sql.* debido a que dentro de lse encuentra la clase DataSource. sta representa un poolde conexiones en java.

    package apr endamos. j ava. ut i l ;

    / / Est a cl ase nos retornar a una conexi on a base de datos

    import j ava. sql . * ;import j avax. nami ng. *;import j avax. sql . * ;

    public class MySql DBConn {/ / Ut i l i zar emos mas bi en un pool de conexi ones

    / / cr eamos el metodo que nos permi t e obtener una conexi on. . .

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    58/164

    58

    CARRERAS PROFESIONALES CIBERTEC

    Notas:

    1) El nombre del contexto JNDI por default es java:comp/env.Todas las denominaciones de objetos JNDI (como nuestro pool),se crean debajo de este nombre raz. Por lo tanto, parareferenciar al pool, se pasar primero por el nombre raz.

    2) A travs del mtodo lookup y utilizando el nombre raz delcontexto, se referencia al pool de conexiones: jdbc/sisepuede.

    . . .public static Connect i on obt enerConexi on( ) {

    / / 1. Par a r ef erenci ar al pool cr eamos un cont ext o J NDI / / J ava Nami ng and Di r ect or y I nt er f ace

    Connect i on cn=null;

    try {

    / / creamos el cont ext o J NDI I ni ci al , J DNI val i da l os nombr es , ut i l i zal a i nf or de META I NF para hacer un pool de conexi ones. , J NDI manej anombres y obj et os

    Cont ext ct x = new I ni t i al Context ( ) ;

    / / ahora vamos a ubi car un nombre dent r o/ / de est e cont ext o, para el l o usamos el/ / f amoso met odo l ookup.

    / / Base st andar J NDSt r i ng r ai zCont exto =" j ava: comp/ env/ " ;

    / / obt enemos a t r aves de su nombre a nuest r o/ / pool de conexi onesDat aSour ce ds=

    ( Dat aSour ce) ct x. l ookup( r ai zCont exto+" j dbc/ si sepuede" ) ;

    / / l e pedi mos al pool que nos de una conexi oncn = ds. getConnect i on( ) ;

    Syst em. out. pr i nt l n(

    "Mi si on cumpl i da, hemos obt eni do l a conexi on delpool " ) ;

    } catch ( Nami ngExcept i on e) {/ / TODO Aut o- generat ed cat ch bl ocke. pr i nt St ackTr ace( ) ;

    } catch ( SQLExcept i on e) {/ / TODO Aut o- generat ed cat ch bl ocke. pr i nt St ackTr ace( ) ;

    }

    return cn;

    }

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    59/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    60/164

    60

    CARRERAS PROFESIONALES CIBERTEC

    e) Paso 5: Ejecutar la aplicacin web

    Ingrese a la intranet a travs de la pgina de logueo.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    61/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 6 1

    CIBERTEC CARRERAS PROFESIONALES

    Debe visualizar la pantalla de bienvenida con los datos delusuario logueado.

    Tambin, se visualizar en la consola de Eclipse los mensajesdel Logueo y el que se coloc en la clase MySqlDbConn: misincumplida, se ha obtenido la conexin del pool.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    62/164

    62

    CARRERAS PROFESIONALES CIBERTEC

    f) Paso 6: Bien!, ha culminado la funcionalidad registraimagen pool exitosamente.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    63/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 6 3

    CIBERTEC CARRERAS PROFESIONALES

    1.2.2. Libreras de etiquetas de Struts 2. Principales componentes

    Dentro de la familia de nuevas etiquetas de Struts 2, es importantedestacar que, en esta versin, todas las etiquetas bsicas del frameworkse encuentran en una sola librera, la cual es referenciada en un JSP dela siguiente manera:

    Se detalla, a continuacin, ejercicios de aplicacin en los que se utilizanlas principales etiquetas de Interface de usuario y datos de Struts 2:

    9 9 9

    1.2.2.1. Ejercicio 2: Funcionalidad carga datos del Cliente

    Se implementa la funcionalidad indicada haciendo uso de lasutilidades incluidas en el Framework para procesar archivos (enel ejemplo la imagen del cliente) a travs de un formulario HTMLy el uso de un Action de Struts 2 que utiliza un nuevo tipo deResult: stream.

    a) Paso 1: Importar el proyecto proyecto webFuncionalidadCargaDatosCliente_Inicial.war

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    64/164

    64

    CARRERAS PROFESIONALES CIBERTEC

    Notas:1) Debe modificar la pgina listado.jsp para agregar un enlaceque permita visualizar los datos de un cliente en particular.

    b) Paso 2: Modificar el archivo listado.jsp

    Dentro de la pgina listado.jsp, debe crear un nuevo enlacepara visualizar los datos del cliente seleccionado. Complete elcdigo con la lgica mostrada a continuacin:

    . . .

    ${el cl i . usuar i o}

    M

    . . .

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    65/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 6 5

    CIBERTEC CARRERAS PROFESIONALES

    Notas:

    1) Utilizando la etiqueta defina un enlace que permitirinvocar al alias cargaModificaCliente. Adicionalmente, determineel parmetro usuario utilizando la etiqueta . Su valores asignado usando el siguiente expression language (EL):${elcli.usuario}

    2) Culminado el cambio en listado.jsp, visualizar el enlace, talcomo se muestra en la pantalla previa.

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    66/164

    66

    CARRERAS PROFESIONALES CIBERTEC

    c) Paso 3: Registrar el alias cargaModificaCliente en el archivostruts.xml

    Notas:

    1) El alias cargaModificaCliente fue referenciado en el enlacedefinido para modificar (M) de la pgina listado.jsp. Note que alinvocar este alias se ejecutar dentro de la clase ClienteAction elmtodo cargaModifica.

    d) Paso 4: Crear el mtodo cargaModifica en la claseClienteAction

    La clase ClienteAction debe contar con la siguiente lgica:

    package apr endamos. j ava. act i on;

    import j ava. ut i l . Li st ;

    import apr endamos. j ava. bean. Cl i ent eDTO;import apr endamos. j ava. ser vi ce. Cl i ent eSer vi ce_I ;import apr endamos. j ava. ser vi ce. Paquet eBusi nessDel egate;

    public class Cl i ent eAct i on {

    / / cr eamos un at r i but o de t i po Li st a de Cl i ent esCl i ent eDTO cl i ente;Li st cl i ent es;St r i ng usuar i o;

    . . .

    / modi f i caCl i ent e. j sp

    1

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    67/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 6 7

    CIBERTEC CARRERAS PROFESIONALES

    Notas:

    1) Se ha definido la variable usuario de tipo String. Se definentambin los mtodos setUsuario() y getUsuario(),respectivamente.

    De manera automtica, el Framework instancia el objeto yalmacena en ste el parmetro usuario, que llega desde lapgina listado.jsp. .

    2) Note que el mtodo buscaClientePorUsuario recibe comoparmetro la variable usuario y retorna un objeto de tipoClienteDTO que es asignada a la variable cliente.

    3) Luego, se retorna a la vista respectiva, es decir, se invocar ala pgina modificaCliente.jsp

    . . .public St r i ng car gaModi f i ca( ) {

    St r i ng vi sta="exi t o" ;

    try {

    cl i ente=

    servi c i oCl i ent e. buscaClientePorUsuario (this. get Usuar i o( ) ) ;

    } catch ( Except i on e) {/ / TODO Aut o- gener at ed cat ch bl ocke. pr i nt St ackTr ace( ) ;

    }

    return vi sta;}

    . . .

    2

    3

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    68/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    69/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 6 9

    CIBERTEC CARRERAS PROFESIONALES

    f) Paso 6: Ejecutar la aplicacin web

    Seleccione del listado de Clientes el enlace M asociado acualquiera de los clientes listados:

    Notas:

    1) Enlace para visualizar los datos del cliente y, opcionalmente,modificarlos.

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    70/164

    70

    CARRERAS PROFESIONALES CIBERTEC

    En la pantalla mostrada, se visualizarn los datos asociados alcliente seleccionado. Sin embargo, no reconoce an lafotografa.

    g) Paso 7: Bien!, ha culminado la primera parte de lafuncionalidad carga imagen

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    71/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 7 1

    CIBERTEC CARRERAS PROFESIONALES

    h) Paso 8: Modificar la pgina modificaCliente.jsp

    Dentro de la pgina modificaCliente.jsp debe utilizar la etiquetaHTML para visualizar la fotografa asociada al clientemostrado:

    Notas:

    1) Note cmo en el atributo src de la etiqueta se hacereferencia al alias cargaImagenCliente. Se enva adicionalmenteel parmetro usuario con el valor ${cliente.usuario}.

    . . .

    Fot ogr af a:

    . . .

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    72/164

    72

    CARRERAS PROFESIONALES CIBERTEC

    i) Paso 9: Registrar el alias cargaImagenCliente en el archivostruts.xml

    Notas:

    1) El alias cargaImagenCliente fue referenciado en la etiqueta de la pgina modificaCliente.jsp. Note que al invocarlo se

    ejecutar dentro de la clase ImagenAction el mtodorecuperaImagenCliente.

    2) Se utiliza un nuevo tipo de result: stream. A travs de l, laetiqueta de la pgina modificaCliente.jsp visualizar laimagen a partir de un campo de tipo InputStream.

    3) El campo imagenClienteRecuperada es el valor asociado alparmetro del result: inputName. ste debe ser de tipoInputStream y estar definido en el actionImagenAction.

    i magenCl i ent eRecuper ada

    2

    3

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    73/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 7 3

    CIBERTEC CARRERAS PROFESIONALES

    j) Paso 10: Crear el mtodo recuperaImagenCliente en laclase ImagenAction

    La clase ImagenAction debe contar con la siguiente lgica:

    package apr endamos. j ava. act i on;

    i mpor t j ava. i o. *;

    i mport apr endamos. j ava. bean. Cl i ent eDTO;i mpor t apr endamos. j ava. ser vi ce. Cl i ent eSer vi ce_I ;i mport apr endamos. j ava. servi ce. Paquet eBusi nessDel egate;

    publ i c cl ass I magenAct i on {

    St r i ng usuar i o;I nputStr eam i magenCl i ent eRecuperada;

    . . .

    1

    . . .public St r i ng r ecuper aI magenCl i ent e( ) {

    St r i ng vi sta="exi t o" ;

    try {

    Cl i ent eDTO cl i =

    servi c i oCl i ent e. buscaCl i ent ePor Usuar i o( usuar i o) ;

    / / del obj et o cl i sol o nos i mpor t a l a f ot o como I nput St r eam / / r ecuperamos ese at r i buto y l o asi gnamos al campo

    / / i magenCl i ent eRecuper adathis. i magenCl i ent eRecuper ada = cl i . get I sFot o( ) ;

    } catch ( Except i on e) {/ / TODO Aut o- gener at ed cat ch bl ocke. pr i nt St ackTr ace( ) ;

    }

    return vi sta;}

    . . .

    2

    3

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    74/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    75/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 7 5

    CIBERTEC CARRERAS PROFESIONALES

    En la pantalla mostrada, se visualizarn los datos asociados alcliente seleccionado. En esta oportunidad, s visualizar lafotografa asociada al cliente.

    l) Paso 12: Muy Bien!, ha culminado exitosamente la

    funcionalidad completa carga imagen.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    76/164

    76

    CARRERAS PROFESIONALES CIBERTEC

    1.2.3. Patrn Composi te View Struts 2 Tiles

    Al momento de crear el diseo de un sitio web tpico, ste puede sufrirmuchos cambios durante su ciclo de vida. Utilizar diseos y gestores de

    diseo puede ayudar a organizar las diferentes partes de un JSP de modoque stos se puedan alterar con un mnimo impacto para el resto de laaplicacin.

    Surge, de esta manera, el patrn de diseo Composite View, el cualpermite, de manera eficiente y escalable, gestionar diversos diseos paraun sitio web. Desafortunadamente, la tecnologa JSP no proporcionaningn soporte directo para diseos o gestores de diseo, es por ello quesurgen libreras en el mercado que pueden ser utilizadas para mejorar laestructura de nuestras aplicaciones web.

    Se muestra, a continuacin, a travs de un ejercicio, la configuracin y

    uso de la librera Tiles. sta es de cdigo abierto e implementa el patrnComposite View.

    1.2.3.1. Ejercicio 1: Mantenimiento Completo con Tiles

    Sobre un mantenimiento completo e implementado con Struts 2,se harn las modificaciones necesarias para implementar elpatrn Composite View. Para ello, se utilizar el framework Tiles

    y se integrar a la aplicacin web construida sobre Struts 2.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    77/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 7 7

    CIBERTEC CARRERAS PROFESIONALES

    a) Paso 1: Importar el proyecto webMantenimientoTiles_Inicial.war

    Notas:

    1) En general, las pginas JSP de la aplicacin se encontrarndentro de carpetas especficas. En este ejemplo, se cuentacon dos tipos:

    Pginas. Para todas aquellas de la aplicacin web.

    1

    2

    3

    4

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    78/164

    78

    CARRERAS PROFESIONALES CIBERTEC

    Plantillas. Para las diferentes plantillas tiles sobre lascuales se distribuirn las pginas de la aplicacinweb.

    2) Para utilizarTiles e integrarlo a struts 2, es necesario contarcon las libreras de Tiles y el plug in de Struts 2 para sta.

    3) El archivo de configuracin de tiles es tiles.xml y debecopiarse por defecto en la carpeta WEB-INF de la aplicacinweb.

    4) No todos los archivos JSP deben, necesariamente, estardentro de una carpeta. En el ejemplo, la pgina logueo.jspmantiene su ubicacin original: dentro de la carpetaWebContent.

    b) Paso 2: Modificar el archivo web.xml

    Se deben agregar en el archivo web.xml las siguientes etiquetas:

    Notas:

    1) Debe agregar el listener de Tiles para struts 2.

    or g. apache. str ut s2. t i l es. St r ut sTi l esLi stener

    . . .

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    79/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 7 9

    CIBERTEC CARRERAS PROFESIONALES

    c) Paso 3: Modificar el archivo struts.xml

    Notas:

    1) Debe crear definiciones de Tiles. sta determina qu

    componentes (JSPs normalmente) se despliegan sobreuna plantilla en particular. En el ejemplo, el definitiond_bienvenida referencia a la plantilla diseno01.jsp,

    2) Un definition puede ser heredado. De esta manera, soloes necesario sobre escribir los puts que queramosmodificar. En el ejemplo, el definition d_listado hereda deldefinition d_bienvenida.

    3) Note que los puts dentro de los definitions estnreferenciando a pginas JSP dentro de la carpetapginas. sta debe existir y ah deben encontrarse laspginas referenciadas.

    . . .

    1

    2

    3

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    80/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    81/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 8 1

    CIBERTEC CARRERAS PROFESIONALES

    e) Paso 5: Crear el archivo diseno01.jsp

    Notas:

    1) El archivo debe ser creado tal como se referenci en elarchivo tiles.xml, es decir, dentro de una carpeta lladaplantillas.

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    82/164

    82

    CARRERAS PROFESIONALES CIBERTEC

    f) Paso 6: Modificar el archivo diseno01.jsp

    Notas:1) Para poder utilizar las etiquetas de tiles dentro de la

    pgina JSP, es necesario referenciar a la librera deetiquetas tags-tiles.

    2) Note cmo se ha creado una tabla con filas y columnas,dentro de las cuales, haciendo uso de la etiqueta, se insertan los diferentes putsdefinidos en el archivo tiles.xml.

    I nser t t i t l e here

    . . .

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    83/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 8 3

    CIBERTEC CARRERAS PROFESIONALES

    g) Paso 7: Copiar las pginas JSP dentro de la carpeta pginas

    Notas:

    1) Tal como se indic en el archivo tiles.xml, las pginas JSP

    deben estar dentro de una carpeta denominada pginas.

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    84/164

    84

    CARRERAS PROFESIONALES CIBERTEC

    h) Paso 8: Eliminar las directivas de todas laspginas JSP.

    Notas:

    1) Dado que ahora se trabajar con Tiles, ya no es necesariotener directivas include dentro de los JSPs.

    Importante: De dejarlas, se duplicara la implementacin delpatrn de diseo Composite View.

    . . .

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    85/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 8 5

    CIBERTEC CARRERAS PROFESIONALES

    i) Paso 9: Ejecutar la aplicacin web

    Ingrese a la intranet a travs de la pgina de logueo.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    86/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    87/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 8 7

    CIBERTEC CARRERAS PROFESIONALES

    Resumen

    Las etiquetas de struts 2 se encuentran agrupadas dentro de una sola librera:

    Las etiquetas de struts 2 son parte de la capa de presentacin dentro de unaarquitectura MVC.

    Con Tiles, se puede, fcilmente, cambiar de una estructura de aplicacin a otra. Atravs de ste, nicamente de plantillas, permite tener mayor flexibilidad almomento de una posible migracin.

    Si desea saber ms acerca de estos temas, puede consultar las siguientespginas:

    http://struts.apache.org/2.x/index.html

    Aqu encontrar importante documentacin oficial y ejemplos de uso del frameworkStruts 2

    http://struts.apache.org/1.x/struts-tiles/

    Aqu encontrar documentacin oficial sobre el uso de plantillas Tiles dentro de unaaplicacin implementada con el framework Struts. Tambin, encontrar referenciaspara utilizarTiles independientemente de Struts: Tiles 2.

    http://struts.apache.org/2.x/index.htmlhttp://struts.apache.org/2.x/index.html
  • 7/27/2019 Desarrollo de Aplicaciones Web I

    88/164

    88

    CARRERAS PROFESIONALES CIBERTEC

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    89/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 8 9

    CIBERTEC CARRERAS PROFESIONALES

    PERSISTENCIA DE DATOSFRAMEWORK IBATIS

    LOGRO DE LA UNIDAD DE APRENDIZAJE

    Al finalizar la unidad, los alumnos, utilizando el frameworks IBATIS,

    implementan la capa de persistencia de datos y la integran con el frameworkStruts 2.

    TEMARIO

    2.1 Tema 3 : Introduccin a IBATIS

    2.1.1. : IBATIS Introduccin

    2.1.2. : Operaciones bsicas de acceso a base de datos con IBATIS

    2.2 Tema 4 : Otras operaciones con IBATIS

    2.2.1. : Otras operaciones y caractersticas de IBATIS

    2.2.2. : Tpicos avanzados de IBATIS e Integracin con Struts 2

    ACTIVIDADES PROPUESTAS

    Los alumnos implementan una aplicacin web bsica, utilizando las principalescaractersticas del framework MVC Struts 2 y el framework IBATIS.

    UNIDAD DE

    APRENDIZAJE

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    90/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    91/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    92/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    93/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 9 3

    CIBERTEC CARRERAS PROFESIONALES

    c) Paso 3: Modificar el archivo SqlMapConfig.xml

    Notas:1) A travs de la etiqueta , se define,

    en IBATIS, el pool de conexiones, que se utilizar paraacceder a un origen de datos. En el ejemplo, el pool sellama: nomerindo.

    2) A travs de la etiqueta , se referencia a losarchivos XML, que contienen las sentencias SQL para

    operar sobre las entidades que referencian. En elejemplo, se referencian los archivos XML Cliente yProducto.

    cui dado est os ar chi vos como cual qui er r r ef r er nci a de xml de beexi st i r - - >

    . . .

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    94/164

    94

    CARRERAS PROFESIONALES CIBERTEC

    d) Paso 4: Modificar la clase UtilSqlConfig

    import j ava. i o. Reader ;

    import com. i bat i s. common. r esour ces. Resour ces;import com. i bat i s. sql map. cl i ent . Sql MapCl i ent ;import com. i bat i s. sql map. cl i ent . Sql MapCl i ent Bui l der ;/ / Est a cl ase r et or na un obj et o que r epr esent a el ar chi vo/ / Sql MapConf i g. xml . Est e es el pr i nci pal ar chi vo de/ / cof i gur aci on de i bat i s

    / / Per mi t e r epr esent a sql MapConf i g como un obj et opublic class Ut i l Sql Conf i g {

    private static final Sql MapCl i ent sqlMap;static {

    try {St r i ng r esour ce =

    "apr endamos/ j ava/ i bat i s/ Sql MapConf i g. xml " ;

    Reader r eader =Resour ces. getResourceAsReader(resource);

    / / Est e obj eto pr esent a al SQLmApConf i g. xml est os esl o que se t r at a de hacer

    sqlMap =

    Sql MapCl i ent Bui l der . buildSqlMapClient(reader);} catch ( Except i on e) {

    e. pr i nt St ackTr ace( ) ;throw new Runt i meExcept i on(

    "Er r or i ni ci al i zando l a cl ase Ut i l Sql Conf i gcl ass. Cause: " + e) ;

    }}

    public static Sql MapCl i ent get Sql MapI nst ance( ) {return sqlMap;

    }}. . .

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    95/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    96/164

    96

    CARRERAS PROFESIONALES CIBERTEC

    f) Paso 6: Modificar el archivo MySqlClienteDAO

    Notas:1) A travs de la clase UtilSqlConfig, se crea una instancia

    de la clase SqlMapClient. En el ejemplo, el objeto sqlMapes la representacin en java del archivo SqlMapConfig.2) Se invoca al mtodo queryForObject del objeto sqlMap.

    Se enva como parmetros lo siguiente: El nombre de la operacin que se desea ejecutar

    (definida en el archivo Cliente.xml) El cdigo de usuario a travs del cual se validar

    el logueo.

    public Cl i ent eDTO buscaPor Usuar i o( St r i ng usuar i o) throws Except i on{/ / Met odo modi f i cado par a I bat i s

    Cl i ent eDTO obj Cl i ent eDTO=null;Syst em. out. pr i nt l n( "Val i damos con i bat i s" ) ;Sql MapCl i ent sql Map=Ut i l Sql Conf i g. getSqlMapInstance( ) ;

    obj Cl i ent eDTO=( Cl i ent eDTO) sql Map. queryFor Obj ect ( "i bat i s_l ogueo" , usuar i o) ;

    Syst em. out. pr i nt l n( "busca por usuar i o usando I bat i s" ) ;return obj Cl i ent eDTO;}

    . . .

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    97/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 9 7

    CIBERTEC CARRERAS PROFESIONALES

    g) Paso 7: Ejecutar la aplicacin web

    Ingrese a la intranet a travs de la pgina de logueo.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    98/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    99/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 9 9

    CIBERTEC CARRERAS PROFESIONALES

    2.1.2. Operaciones bsicas de Acceso a base de datos con IBATIS

    Para implementar las operaciones bsicas con IBATIS, es necesarioconocer las principales etiquetas del Framework. stas se muestran a

    continuacin:

    Sentencias Atributos Elementos Hijos Mtodos

    i d

    par amet erCl ass

    r esul t Cl ass

    paramet er Map

    r esul t Map

    cacheModel

    xml Resul t Name ( J ava

    onl y)

    Al l dynami c el ement s

    i nser t

    updat e

    del et e

    Al l quer y

    met hods

    i d

    par amet erCl ass

    paramet er Map

    Al l dynami c el ement s

    ( . NET

    onl y)

    i nser t

    updat e

    del et e

    i d

    par amet erCl ass

    paramet er Map

    Al l dynami c el ement s

    ( . NET

    onl y)

    i nser t

    updat e

    del et e

    i d

    par amet erCl ass

    paramet er Map

    Al l dynami c el ement s

    ( . NET

    onl y)

    i nser t

    updat e

    del et e

    i d

    par amet erCl ass

    r esul t Cl ass

    paramet er Map

    r esul t Map

    cacheModel

    Al l dynami c el ement s

    ( . NET

    onl y)

    Al l quer y

    met hods

    i d

    par amet erCl ass

    r esul t Cl assparamet er Map

    r esul t Map

    xml Resul t Name ( J ava

    onl y)

    Al l dynami c el ement s

    i nser t

    updat edel et e

    Al l quer y

    met hods

    Se desarrollan, a continuacin, diversos ejercicios en los que se utilizarny describirn las principales etiquetas del Framework.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    100/164

    100

    CARRERAS PROFESIONALES CIBERTEC

    2.1.2.1. Ejercicio 1: Funcionalidad IBATIS - Mantenimiento

    Se implementar una aplicacin que permita ejecutar lasoperaciones bsicas de un mantenimiento, utilizando elframework IBATIS.

    a) Paso 1: Modificar el archivo Cliente.xml

    Notas:1) Al utilizar la etiqueta , se ha creado un

    prametro especial llamado clienteMap. ste ser enviadodesde la clase DAO y estar representado por la clasejava.util.Map. Note cmo se identifica cada campo de la claseMap con el tipo de dato al que se referir en la base dedatos.

    . . .

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    101/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 0 1

    CIBERTEC CARRERAS PROFESIONALES

    Se crean las operaciones para insertar y listar clientes pornombre.

    Notas:1) Observe cmo la operacin ibatis_insertaCliente recibe

    como parmetro clienteMap definido en lneas previas.Los campos son automticamente asociados a lasinterrogantes de la sentencia SQL.

    ' %$val ue$%' - - >sel ect usuar i o, cl ave, nombr e, suel do, sexo, f ecnac

    f r om t bcl i ent e wher e nombr e l i ke #val ue#

    i nser t i nt o t bcl i ent e( nombr e, suel do, sexo, f ecnac,usuar i o, cl ave, f ot o) val ues ( ?, ?, ?, ? , ? , ? , ?)

    . . .

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    102/164

    102

    CARRERAS PROFESIONALES CIBERTEC

    b) Paso 2: Modificar la clase MySqlClienteDAO

    Se prepara la invocacin a las operaciones IBATIS definidas en elarchivo Cliente.xml.

    Notas:1) A partir del campo isFoto (de tipo InputStream), se

    prepara un arreglo de bytes, el cual se carga en el objetomap con el nombre foto.

    2) Se invoca a la sentencia insert de IBATIS, pasndolecomo parmetros el nombre de la operacin a ejecutar yel objeto map.

    public int r egi st r aCl i ent e( Cl i ent eDTO obj Cl i ent e) throws Except i on{

    Syst em. out. pr i nt l n( "I nser t ando con i bat i s : ) " ) ;int r esul t ado =0;

    Sql MapCl i ent cl i ent e = Ut i l Sql Conf i g. getSqlMapInstance( ) ;

    / / En vez de envi ar obj Cl i ent e, envi ar emos una est r uct ur a/ / pr epar ada par a sopor t ar un t i po LongBl oB y r egi st r ar / / el cl i ent e con I BATI SHashMap map =

    new HashMap( ) ;

    map. put ( "nombr e" , obj Cl i ent e. get Nombr e( ) ) ;map. put ( "suel do" , obj Cl i ent e. get Suel do( ) ) ;map. put ( "sexo" , obj Cl i ent e. get Sexo( ) ) ;map. put ( " f ecnac" , obj Cl i ent e. get Fecnac() ) ;map. put ( "usuar i o" , obj Cl i ent e. get Usuar i o( ) ) ;map. put ( "cl ave" , obj Cl i ent e. get Cl ave( ) ) ;

    / / i nt ent o 01: asumi mos que i bat i s sopor t a como par amet r o

    / / un ar r egl o de bytes/ / Asumi mos que est a l l egando l a f ot oI nput St r eam i s = obj Cl i ent e. get I sFot o( ) ;byte[ ] l osbyt es = newbyte[ i s. avai l abl e( ) ] ;

    / / a par t i r del i nput St r eam car gamos el ar r egl o l os byt esi s. r ead( l osbyt es);

    map. put ( "f ot o" , l osbyt es);

    cl i ent e. i nser t ( " i bat i s_i nser t aCl i ent e" , map) ;

    Syst em. out. pr i nt l n( "r egi st r o exi t oso con I BATI S : ) " ) ;return r esul t ado;

    }. . .

    1

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    103/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    104/164

    104

    CARRERAS PROFESIONALES CIBERTEC

    En la consola, se visualizar el mensaje definido en la claseMySqlClienteDAO.

    Ahora, seleccione el enlace Nuevo Cliente y registre uno nuevocon el botn Registrar.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    105/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 0 5

    CIBERTEC CARRERAS PROFESIONALES

    Se visualizar la siguiente ventana con el nuevo registroingresado. En el ejemplo, se ha registrado al cliente DonRamn.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    106/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    107/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 0 7

    CIBERTEC CARRERAS PROFESIONALES

    2.2 Otras operaciones con IBATIS

    2.2.1. Otras operaciones y caractersticas de IBATIS

    Los procedimientos almacenados se crean con la declaracin

    . El siguiente ejemplo muestra un procedimientoalmacenado con parmetros de salida.procedure.xml

    ( cal l swap_emai l _addr ess ( ?, ?) )

    Se implementan, a continuacin, ejercicios con procedimientosalmacenados IBATIS.

    2.2.1.1. Ejercicio 1: Registro de Clientes utilizando Stored Procedures

    Se implementar una aplicacin web que permita registrar losdatos de un cliente (incluida su fotografa), utilizando IBATIS yStored Procedures.

    a) Paso 1: Importar el archivoFuncionalidadIbatisProcedure_Inicial.war

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    108/164

    108

    CARRERAS PROFESIONALES CIBERTEC

    Notas:1) Cuenta, en esta oportunidad, dentro de la carpeta bd con

    archivos adicionales dentro de los cuales destacaps_nuevoCliente.sql. Este archivo contiene el storedprocedure que deber crear en mysql.

    b) Paso 2: Ejecute el archivo sp_nuevoCliente.sql dentro demysql

    1

    CREATE PROCEDURE `sp_nuevoCl i ent e`(in vnombr e varchar( 100) ,in vsuel do double,in vsexo varchar(1) ,in vf ecnac date,in vusuar i o varchar(15),in vcl ave varchar(15),in vf ot o BLOB,i nout r esul t ado int)BEGIN

    declare var i abl e int;

    select count ( *) into var i abl e fromt bcl i ent e whereusuar i o = vusuar i o;

    i f var i abl e = 0 then

    set r esul t ado = 777;

    insert intot bcl i ent e( nombr e, suel do, sexo, f ecnac, usuar i o, cl ave, f ot o)values(

    vnombr e,vsuel do,vsexo,

    vf ecnac,vusuar i o,vcl ave,vf ot o) ;

    el seset r esul t ado = 666;endi f ;

    END $$. . .

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    109/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 0 9

    CIBERTEC CARRERAS PROFESIONALES

    Ejecute el stored procedure, utilizando la herramientaMysql Query Browser (u otra equivalente)

    Notas:

    1) Se recibe como parmetro un campo de tipo BLOB. stedebe haber sido cargado previamente en la claseMySqlClienteDAO y reconocido por el archivo Cliente.xml.

    2) Una vez ejecutado el script del stored procedure se debevisualizar su base de datos (en el ejemplo facilito) y elnombre del procedimiento creado.

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    110/164

    110

    CARRERAS PROFESIONALES CIBERTEC

    c) Paso 3: Modifique el mtodo registraCliente dentro de la claseMySqlClienteDAO

    Notas:1) Se carga en el objeto map un atributo adicional: el campo

    resultado. ste permitir recuperar el resultado retornadopor el stored procedure.

    2) Se debe invocar a una nueva operacin definida en elarchivo Cliente.xml: ibatis_spInsertaCliente.

    3) Se recupera el resultado retornado por el storedprocedure:En el ejemplo, en caso de ser exitosa la operacin,

    retornar el valor 777, de lo contrario regresar a 666.

    byte[ ] l osbyt es = newbyte[ i s. avai l abl e( ) ] ;

    / / a par t i r del i nput St r eam car gamos el ar r egl o l os byt esi s. r ead( l osbyt es);

    map. put ( "foto" , l osbyt es) ;

    map. put ( " r esul t ado" , 0) ;

    Syst em. out. pr i nt l n( " r esul t ado ant es de i nser t ar : " + map. get ( " r esul t ado") ) ;

    cl i ent e. i nser t ( " i bat i s_spI nser t aCl i ent e" , map) ;

    Syst em. out. pr i nt l n( " r esul t ado despues de i nser t ar : " + map. get ( " r esul t ado" ) ) ;

    Syst em. out. pr i nt l n( " i nvocaci on exi t osa a SP I BATI S : ) " ) ;

    return r esul t ado;

    . . .

    1

    2

    3

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    111/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 1 1

    CIBERTEC CARRERAS PROFESIONALES

    d) Paso 4: Modifique el archivo Cliente.xml

    Notas:1) Se debe modificar cada una de las etiquetas

    para indicar, a travs del atributo mode, si el parmetroes de entrada o entrada/salida.

    2) Note cmo el arreglo de bytes cargado con el nombrefoto en el objeto java.util.map es mapeado a una columnaen la tabla de tipo BLOB:

    jdbcType=BLOB

    3) Note qu resultado es la nica propiedad de tipo INOUT.A travs de ella, se retornar al MySqlClienteDAO elresultado de la ejecucin del stored procedure.

    4) Debe invocar al stored procedure creado en base dedatos a travs de la sentencia call. Note que usa laetiqueta IBATIS para definir la operacinibatis_spInsertaCliente.

    . . .

    cal l sp_nuevoCl i ent e( ?, ? , ? , ? , ? , ? , ? , ?)

    1

    2

    3

    4

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    112/164

    112

    CARRERAS PROFESIONALES CIBERTEC

    e) Paso 5: Ejecute la aplicacin

    Seleccione la opcin Nuevo Cliente una vez realizado el listadode Clientes. Visualizar la siguiente pantalla:

    Luego de ingresar datos y seleccionar el botn Registrar,se visualizar la siguiente pantalla:

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    113/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 1 3

    CIBERTEC CARRERAS PROFESIONALES

    Se visualizar tambin, en la consola de Eclipse, lossiguientes mensajes:

    f) Paso 6: Muy Bien!, ha culminado exitosamente la

    funcionalidad Registro de Clientes con Stored Procedures e

    IBATIS.

    I nser t ando con i bat i s : )

    resultado antes de insertar: 0resultado despues de insertar: 777

    i nvocaci on exi t osa a SP I BATI S : )dent r o del l i st aCl i ent e del Ser vi ceVal i damos con i bat i sl i st ado por nombr e usando I bat i s23/ 01/ 2011 05: 38: 41 PMcom. opensymphony. xwork2. ut i l . l oggi ng. commons. CommonsLoggerI NFO: Removi ng f i l e cl i ent e. f ot oC: \ User s\ pl gar ci a\ wor kspace\ . met adat a\ . pl ugi ns\ or g. ecl i pse. wst. ser ver . cor e\ t mp0\ wor k\ Cat al i na\ l ocal host \ Funci onal i dadI Bat i sP

    r ocedure_Fi nal \ upl oad__2a3c5961_12db5077826__8000_00000006. t mp23/ 01/ 2011 05: 38: 41 PMcom. opensymphony. xwork2. ut i l . l oggi ng. commons. CommonsLoggerwar n

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    114/164

    114

    CARRERAS PROFESIONALES CIBERTEC

    2.1.2. Tpicos Avanzandos de IBATIS e integracin Struts 2

    Es cada vez ms comn utilizar estructuras de base de datos capaces dealmacenar grandes cantidades de informacin. IBATIS es capaz degestionar objetos grandes (LOB), tales como los campos BLOB (Binary) oCLOB (de caracteres). A partir de la versin de IBATIS 2.0.9, esteframework cuenta, por defecto, los campos BLOB y CLOB.

    Se implementa, a continuacin, un ejemplo con Stored Procedures queutiliza este tipo de estructuras.

    2.1.2.1. Ejercicio 1: Actualizacin de Clientes utilizando Stored Procedures

    a) Paso 1: Ubique los Stored Procedures relacionados con laactualizacin de datos de un cliente almacenados en la carpeta

    bd de su proyecto.

    Notas:1) Observe que debe ejecutar los archivos

    sp_modificaCliente.sql y sp_modificaClienteConFoto.sql

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    115/164

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    116/164

    116

    CARRERAS PROFESIONALES CIBERTEC

    CREATE PROCEDURE `sp_modi f i caCl i ent eConFot o`(in vnombr e varchar( 100) ,in vsuel do double,in vsexo varchar(1) ,in vf ecnac date,in vusuar i o varchar(15),in vcl ave varchar(15),in vf ot o BLOB,i nout r esul t ado int)

    BEGIN

    declare var i abl e int;

    select count ( *) into var i abl e fromt bcl i ent e whereusuar i o = vusuar i o;

    i f var i abl e ! = 0 then

    set r esul t ado = 777;

    update t bcl i ent eset nombr e=vnombr e,suel do=vsuel do,sexo=vsexo,f ecnac=vf ecnac,cl ave=vcl ave,f ot o=vf ot o

    where usuar i o=vusuar i o;el seset r esul t ado = 666;endi f ;

    END $$. . .

    2

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    117/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 1 7

    CIBERTEC CARRERAS PROFESIONALES

    En el ejemplo, se ha utilizado la herramienta MySqlWorkBench para ejecutar los Stored Procedures.

    Notas:

    1) La sentencia update no considera en su ejecucin laactualizacin de la columna foto. Este procedure serinvocado cuando el usuario del sistema no deseeactualizar la fotografa del cliente.

    2) Este procedure s recibe como parmetro un campodenominado vfoto, de modo que se pueda actualizar laimagen del cliente.

    3) Una vez ejecutados los procedures dentro de laherramienta grfica de Mysql stos se visualizan en laventana de edicin. En el ejemplo, en la ventana ObjectBrowser.

    3

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    118/164

    118

    CARRERAS PROFESIONALES CIBERTEC

    c) Paso 3: Modifique el mtodo registraCliente dentro de la claseMySqlClienteDAO

    Notas:

    1) Solo se carga en el objeto map el atributo foto, si ste esdiferente de null. En el ejemplo, se controla esta situacin atravs de la condicin:

    if ( obj Cl i ent e. get Fot o( ) ! = null)

    HashMap map = new HashMap( ) ;

    map. put ( "nombr e" , obj Cl i ent e. get Nombr e( ) ) ;map. put ( "suel do" , obj Cl i ent e. get Suel do( ) ) ;map. put ( "sexo" , obj Cl i ent e. get Sexo( ) ) ;map. put ( " f ecnac" , obj Cl i ent e. get Fecnac() ) ;map. put ( "usuar i o" , obj Cl i ent e. get Usuar i o( ) ) ;map. put ( "cl ave" , obj Cl i ent e. get Cl ave( ) ) ;

    if ( obj Cl i ent e. get Fot o( ) ! = null) {

    I nput St r eam i s = obj Cl i ent e. get I sFot o( ) ;

    byte[ ] l osbyt es = newbyte[ i s. avai l abl e( ) ] ;

    / / a par t i r del i nput St r eam car gamos el ar r egl o l os byt esi s. r ead( l osbyt es);map. put ( "f ot o" , l osbyt es);

    }map. put ( " r esul t ado" , 0 ) ;Syst em. out. pr i nt l n( "r esul t ado ant es de act ual i zar : "

    + map. get ( " r esul t ado") ) ;

    Sql MapCl i ent cl i ent e = Ut i l Sql Conf i g. getSqlMapInstance( ) ;if ( obj Cl i ent e. get Fot o( ) ! = null) {cl i ent e. updat e( " i bat i s_spModi f i caCl i ent eConFot o" , map) ;}else{

    cl i ent e. updat e( "i bat i s_spModi f i caCl i ent e" , map) ;}

    Syst em. out. pr i nt l n( " r esul t ado despues de act ual i zar : " + map. get ( " r esul t ado") ) ;

    Syst em. out. pr i nt l n( " i nvocaci on exi t osa a SP MOD I BATI S : ) " ) ;

    }. . .

    1

    2

    3

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    119/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 1 9

    CIBERTEC CARRERAS PROFESIONALES

    2) Se invocar a una nueva operacin:ibatis_spModificaClienteConFoto o ibatis_spModificaCliente.

    3) Se recupera el resultado retornado por el stored procedure:En el ejemplo, en caso de ser exitosa la operacin,retornar el valor 777, de lo contrario regresar a 666.

    d) Paso 4: Modifique el archivo Cliente.xml

    Notas:

    1) Se ha creado un nuevo parameterMap: clienteMapBasico,

    que ser utilizado para actualizar la informacin del clientesin modificar su fotografa.

    . . .cal l sp_modi f i caCl i ent eConFot o( ?, ?, ?, ?, ?, ?, ?, ?)

    cal l sp_modi f i caCl i ent e( ? , ? , ? , ?, ?, ?, ?)

    1

    2

    3

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    120/164

    120

    CARRERAS PROFESIONALES CIBERTEC

    2) Se mantiene el parameterMap clienteMap para actualizar lainformacin del cliente modificando su fotografa.

    3) Se han creado dos nuevas operaciones en el archivoCliente.xml que sern invocadas por la claseMySqlClienteDAO para modificar la informacin del clientemodificando o no su fotografa, respectivamente.

    e) Paso 5: Ejecute la aplicacin

    Una vez realizado el listado de clientes, seleccione el enlace Mpara modificar uno de los clientes. En el ejemplo, se cambian losdatos de Don Ramn. Se visualizar la siguiente pantalla:

    Luego de modificar los datos y seleccionar el botn

    Actualizar, se visualizar la siguiente pantalla:

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    121/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 2 1

    CIBERTEC CARRERAS PROFESIONALES

    Nota:

    1) Puede seleccionar nuevamente el enlace M paraverificar los cambios realizados.

    Visualizar que se logr modificar exitosamente la fotografade Don Ramn.

    1

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    122/164

    122

    CARRERAS PROFESIONALES CIBERTEC

    f) Paso 6: Muy Bien!, ha culminado exitosamente la

    funcionalidad Actualizacin de Clientes con Stored

    Procedures e IBATIS.

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    123/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 2 3

    CIBERTEC CARRERAS PROFESIONALES

    Resumen

    Para recoger un conjunto de elementos con la clase List, puede hacer losiguiente:

    List coches = sqlMap.queryForList("getCoches" , null)

    Para recoger un conjunto de elementos con la clase Map, puede hacer losiguiente:

    Map hashCoche = (Map) sqlMap.queryForObject(" getHashCoche", 3);

    Para el manejo del campo BLOB, se tiene que realizar lo siguiente en elarchivo de Ibatis:

    Si desea saber ms acerca de estos temas, puede consultar la siguientepgina.

    http://www.nabble.com/iBATIS-f360.html

    Aqu encontrar un foro donde se ventilan varios puntos del manejo de

    Ibatis

    http://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.html

    Aqu hallar comparaciones entre los frameworks de persistencia ms

    utilizados.

    http://www.nabble.com/iBATIS-f360.htmlhttp://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.htmlhttp://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.htmlhttp://www.nabble.com/iBATIS-f360.html
  • 7/27/2019 Desarrollo de Aplicaciones Web I

    124/164

    124

    CARRERAS PROFESIONALES CIBERTEC

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    125/164

    D ES AR R O L L O D E AP L I C AC I O N ES WEB I 1 2 5

    CIBERTEC CARRERAS PROFESIONALES

    REPORTES EN SISTEMAS EMPRESARIALES

    LOGRO DE LA UNIDAD DE APRENDIZAJE

    Al finalizar la unidad, los alumnos, utilizando el framework STRUTS 2, lalibrera JasperReport y la herramienta IReport, implementan una aplicacinweb que genera reportes con criterios de bsqueda dinmicos y acceso a basede datos.

    TEMARIO

    3.1 Tema 5 : Reportes con JasperReport

    3.1.1. : Diseo e implementacin de reportes con la herramienta IReport

    3.2 Tema 6 : Struts 2 y JasperReport

    3.2.1. : Integracin de Struts 2 y JasperReport Reportes Estndar

    ACTIVIDADES PROPUESTAS

    Los alumnos implementan una aplicacin web bsica utilizando las principalescaractersticas del framework MVC Struts 2 y la librerajasperReport.

    UNIDAD DE

    APRENDIZAJE

    3

  • 7/27/2019 Desarrollo de Aplicaciones Web I

    126/164

    126

    CARRERAS PROFESIONALES CIBERTEC

    3.1 Reportes con JasperReport

    3.1.1. Diseo e implementacin de Reportes con la herramientaIReport

    La herramienta iReport es un constructor y/o diseador de reportes visual,fcil de usar para JasperReport, un lenguaje para generacin de reportesescrito en Java.

    Esta herramienta permite que los usuarios corrijan visualmente reportescomplejos con cartas, imgenes, subreportes, etc. iReport est, adems,integrado con la biblioteca grfica JFreeChart, una de las ms grficasOpenSource y difundida para Java. Los datos para imprimir pueden serrecuperados por varios tipos de archivos, incluso mltiples uniones JDBC,TableModels, JavaBeans, archivos XML, etc.

    A continuacin, se enumeran las principales caractersticas de esta

    herramienta:

    9 100% escrito en JAVA y, adems, de uso libre