Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

download Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

of 27

Transcript of Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    1/27

    ITSON Manuel Domitsu Kono

    Tutorial 7

     Aplicaciones Web con Struts enNetBeans 5.0

    Creación de un Proyecto

    El desarrollo de una aplicación Web con Struts en NetBeans 5.0 es similar al desarrollode una aplicación Web con sólo JSP visto en el Tutorial 6 – Aplicaciones Web con

    JSPs en NetBeans 5.0. Las diferencias están en la creación del proyecto, y en el usode los asistentes para crear las clases de acción y los objetos de formularios(ActionForms). Lo primero que hay que hacer es crear un proyecto. Un proyecto nospermite administrar los archivos con el código fuente y compilado de una aplicación.

    Para crear un proyecto se sigue el siguiente procedimiento:

    1. Del menú principal de NetBeans 5.0, figura 7.1, seleccione la opción File/NewProject … , presione las teclas Ctrl+Mayúsculas+N o haga clic en el icono NewProject. 

    Figura 7.1

    2. Aparecerá el primer cuadro del asistente para crear un nuevo proyecto, figura

    7.2. En este cuadro del asistente seleccionaremos el tipo de proyecto quedeseamos crear. Como vamos a crear una aplicación Web, seleccionaremos laopción Web en el recuadro Categories: y la opción Web Application en elrecuadro Projets:, y luego presionaremos el botón Next>.

    3. Aparecerá el segundo del asistente para crear proyectos, mostrada en la figura7.3. En este cuadro seleccionaremos el nombre y la ubicación del proyecto.

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    2/27

    174 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    Figura 7.2

    Figura 7.3

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    3/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 175

    ITSON Manuel Domitsu Kono

    a) Establezca el nombre del proyecto (Project Name): Por ejemplo,“amanteMusicaStruts ”.

    b) Establezca el directorio donde se almacenará el proyecto (Projet Location).Por ejemplo: “C:\Documents and Settings\mdomi tsu\Misdocumentos\nbproject ”. En la línea siguiente puede verse la ubicación del

    directorio en el que se almacenarán los archivos del proyecto: ProjectLocation, que es el directorio con el nombre del proyecto dentro deldirectorio donde se ubica el proyecto. En este ejemplo es: “C:\Documentsand Settings\mdomitsu\Misdocumentos\nbproject\amanteMusicaStruts”.

    c) Seleccione en la caja combinada: Source Structure: (estructura del códigofuente:) la opción Jakarta.

    d) Seleccione en la caja combinada: Server: (Servidor:)la opción Sun JavaSystem Application Server .

    e) Seleccione en la caja combinada: J2EE Version: la opción J2EE 1.4.f) Asegúrese que las casillas de selección: Set Source Level to 1.4 

    (Establezca el nivel del código fuente a la versión 1.4) y Set as MainProject (Haga que este proyecto sea el proyecto principal) esténseleccionadas.

    g) Presione el botón Next>.

    4. Aparecerá el tercer cuadro del asistente para crear proyectos, figura 7.4. Estecuadro nos permite establecer si nuestra aplicación Web usará el marco de JavaServer Faces 1.1 o Struts 1.2.7. Como se va a utilizar el marco Struts haga clicen la casilla de verificación: Struts 1.2.7.

    5. Al hacerlo aparecerá en la parte inferior del cuadro unos elementos de entradapara configurar la aplicación, figura 7.5. Aquí sólo modifique la ruta del archivode recursos de mensajes, Appl ication Resorce:, acom.amanteMusicaStruts.struts. Appl ication Resorce, dejando el resto delos elementos sin modificar. Presione el botón Finish.

    6. Desaparecerá el asistente para crear un nuevo proyecto y aparecerá lomostrado en la figura 7.6. Del lado derecho aparece el editor de NetBeans con el

    esqueleto de la página JSP principal: i ndex. j sp, mientras que del ladoizquierdo aparece el árbol de los proyectos, en el que aparece el proyectoamanteMusicaStruts.

    7. Si en el recuadro del árbol de los proyectos hacemos clic en la pestaña Files,aparecerá un árbol con todos los archivos de los proyectos, figura 7.7. Otra vez,en este momento sólo aparecen los archivos del proyecto amanteMusicaStruts.

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    4/27

    176 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    Figura 7.4

    Figura 7.5

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    5/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 177

    ITSON Manuel Domitsu Kono

    Figura 7.6

    Figura 7.7

    8. Podemos ver que Netbeans generó dos archivos: i ndex. j sp ywel comeSt r ut s. j sp. En realidad generó una aplicación de demostración. Al

    ejecutar la aplicación veremos en el navegador Web la página inicial(i ndex. j sp) de la aplicación, figura 7.8

    9. Si hacemos clic en el hipervínculo: Struts Welcome Page de la página

    i ndex. j sp, la aplicación invocará a la página wel comeSt r ut s. j sp, como semuestra en la figura 7.9. Lo anterior sucede porque en la página i ndex. j sp laliga a la página wel comeSt r ut s. j sp aparece como:

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    6/27

    178 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    Figura 7.8

    Figura 7.9

    St r ut s Wel come Page

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    7/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 179

    ITSON Manuel Domitsu Kono

    Como el servlet ActionServlet está configurado para aceptar todos los nombresque tienen la extensión “. do” como nombres lógicos de URL, busca en elarchivo st r ut s- conf i g. xml  un elemento de acción con el atributopat h="/ Wel come" . Este elemento es:

    El parámetro forward establece la página JSP a la que se le pasará el control,

    que en este caso es la página wel comeSt r ut s. j sp. La ubicación del archivost r ut s- conf i g. xml  es en la carpeta web/WEB_INF como se muestra en lafigura 7.10.

    Figura 7.10

    10. Edite el archivo index.jsp para que su código sea el siguiente:

    index.jsp

    Amant e Musi ca: Ver si ón St r ut s

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    8/27

    180 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    Amante Musi ca Versi ón St r uts

    Agrega Canci ón



    El i mi na Canci ón



    Consul t a Canci ones Todas

    Creación de un elemento global

    Un elemento forward global es un elemento declarado dentro de unelemento . Establece un nombre lógico para la ruta de unapágina JSP a la que cualquier clase de acción le puede pasar el control. Aquí

    crearemos un elemento forward que le permita a cualquier clase de acción pasarle elcontrol a la página i ndex. j sp. Para ello, modificaremos el elemento creado por elasistente para crear aplicaciones Web de NetBeans para pasar el control de cualquier

    clase de acción a la página wel comeSt r ut s. j sp. En el archivo , cambie el elemento del elemento de:

    a

    Esto define a “inicio” como un nombre lógico para la ruta a la página i ndex. j sp ypuede ser usado en cualquier clase de acción para pasar el control a esta página.

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    9/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 181

    ITSON Manuel Domitsu Kono

    Creación de una instancia de la ClaseForwardAction

    La clase ForwardAction nos permite pasarle el control de una página JSP a otra. Paracrear una instancia de esta clase sólo necesitamos establecer la ruta relativa de la

    instancia de la clase For wardAct i on que atenderá a la solicitud y la ruta relativa de lapágina JSP a la que se le pasará control. Esto se hace mediante un elemento

    dentro del elemento en el archivo struts-conf i g. xml .

    En este tutorial crearemos dos instancias de la clase For wardAct i on. La primerapara pasar el control de una página JSP a la página i ndex. j sp. La ruta relativa de laclase de acción será: " / I ni ci o" . La segunda para pasar el control de una una páginaJSP a la página capt ur aCl ave. j sp. La ruta relativa de la clase de acción será:" / Capt ur aCl ave" . Para ello, modificaremos el elemento creado por elasistente para crear aplicaciones Web de NetBeans para pasar el control de la páginai ndex. j sp a la página wel comeSt r ut s. j sp. En el archivo , cambie el elemento del elemento de:

    a

     Ahora crearemos la página JSP capt ur aCl ave. j sp. Utilice el asistente de NetBeanspara crear la página y edítala para que tenga el siguiente código:

    capturaClave.jsp

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    10/27

    182 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    Amant e Musi ca: Ver si ón St r ut s - Capt ur a Cl ave

    Amant e Musi ca: Versi ón St r uts

    Canci ón a agr egar

    Canci ón a el i mi nar



    Cl ave



    Guarde la página JSP.

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    11/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 183

    ITSON Manuel Domitsu Kono

    Creación de un Objeto de Formulario

    Un objeto de formulario (actionForm) es un JavaBean que hereda de la claseor g. apache. st r ut s. act i on. Act i onFor m. Se emplea para capturar los datos de

    un formulario HTML y pasárselos a una clase de acción. Aquí crearemos un objeto deformulario llamado Canci onForm. j ava para capturar la clave de una canción delformulario HTML en la página capt ur aCl ave. j sp y pasársela a la clase de acciónobt enCanci onAct i on. j ava. Aunque el objeto de formulario Canci onForm. j ava tiene otros atributos aparte de la clave, sólo se llena la clave con el valor capturado enel formulario.

    Para crear un objeto de formulario se sigue el siguiente procedimiento:

    1. Del menú principal de NetBeans 5.0, seleccione la opción Files/New File, presione las teclas Ctrl+ N o haga clic en el icono New File, como se muestra en

    la figura 7.11:

    Figura 7.11

    2. Aparecerá la primera ventana del asistente para crear un nuevo archivo, figura

    7.12. En esta ventana del asistente seleccionaremos el tipo de archivo quedeseamos crear. Seleccionaremos la opción Web en el recuadro Categories: yla opción Struts ActionForm Bean en el recuadro File Types:, y luegopresionaremos el botón Next>.

    3. Aparecerá la segunda ventana del asistente para crear un archivo, mostrada enla figura 7.13. En esta ventana estableceremos el nombre y la ubicación delobjeto de formulario.

    a) Establezca el nombre de la clase (Class Name): En este caso,“CancionForm”.

    b) Establezca el nombre del paquete en que se creará (Package): En estecaso, “objetosFormularios ”c) Deje el resto de los campos a sus valores prestablecidos.d) Presione el botón Finish.

    4. Desaparecerá el asistente para crear un nuevo archivo y aparecerá el esqueletodel objeto de formulario creado. figura 7.14.

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    12/27

    184 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    Figura 7.12

    Figura 7.13

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    13/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 185

    ITSON Manuel Domitsu Kono

    Figura 7.14

    5. Edite el objeto de formulario Canci onForm. j ava con el código mostrado:

    CancionForm.java

    / ** Canci onForm. j ava* @aut hor mdomi t su* @ver si on* Cr eated on 2 de novi embre de 2006, 07: 38 PM

      */

    package obj et osFormul ari os;

    i mpor t j avax. ser vl et . ht t p. Ht t pSer vl et Request ;i mpor t or g. apache. st r ut s. act i on. Act i onEr r or s;i mpor t or g. apache. st r ut s. act i on. Act i onMappi ng;i mpor t or g. apache. st r ut s. act i on. Act i onMessage;

    i mpor t obj et osSer vi ci o. Fecha;i mport ut i l s . Val i dador;

    / * ** Esta obj et o de f ormul ari o permi t e l a t r ansf er enci a de l a cl ave de una* canci ón de l a pági na capt ur aCl ave. j sp a l a cl ase de acci ón* Obt enCanci on. j ava y de l a pági na capt ur aCanci on. j sp a l a cl ase de acci ón* Agr egarCanci on. j ava de l a apl i caci ón Web Amant eMusi caSt r ut s*/

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    14/27

    186 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    publ i c cl ass Canci onFor m ext ends or g. apache. st r ut s. act i on. Act i onFor m {pr i vat e St r i ng cl ave;pr i vat e St r i ng t i t ul o;pr i vat e St r i ng i nt er pr et e;pr i vat e St r i ng aut or Let r a;pr i vat e St r i ng aut or Musi ca;pr i vat e St r i ng gener o;pr i vat e St r i ng al bum;pr i vat e St r i ng di squer a;pr i vat e St r i ng dur aci on;pr i vat e St r i ng f echa;

    / * ** Const r uct or vací o*/

    publ i c Canci onFor m( ) {super( ) ;

    }

    / * *

    * Regr esa l a cl ave de l a canci ón* @r etur n La cl ave de l a canci ón*/

    publ i c St r i ng get Cl ave( ) {r et ur n cl ave;

    }

    / * ** Est abl ece l a cl ave de l a canci ón* @par am cl ave La cl ave de l a canci ón*/

    publ i c voi d set Cl ave( St r i ng cl ave) {t hi s. cl ave = cl ave;

    }

    / * ** Regr esa el t í t ul o de l a canci ón* @r et ur n El t í t ul o de l a canci ón*/

    publ i c St r i ng get Ti t ul o( ) {ret urn t i tul o;

    }

    / * ** Est abl ece el t í t ul o de l a canci ón* @par am t i t ul o El t í t ul o de l a canci ón*/

    publ i c voi d set Ti t ul o( St r i ng t i t ul o) {thi s. t i tul o = t i tul o;

    }

    / * ** Regr esa el i nt ér pr et e de l a canci ón* @r et ur n El i nt ér pr et e de l a canci ón*/

    publ i c St r i ng get I nt er pr et e( ) {r et ur n i nt er pr et e;

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    15/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 187

    ITSON Manuel Domitsu Kono

    }

    /*** Est abl ece el i nt ér pr et e de l a canci ón* @par am i nt er pr et e El i nt ér pr et e de l a canci ón*/

    publ i c voi d set I nt er pr et e( St r i ng i nt er pr et e) {t hi s. i nt er pr et e = i nt er pr et e;

    }

    / * ** Regr esa el aut or de l a l et r a de l a canci ón* @r et ur n El aut or de l a l et r a de l a canci ón*/

    publ i c St r i ng get Aut or Let r a( ) {r et ur n aut or Let r a;

    }

    / * ** Est abl ece el aut or de l a l et r a de l a canci ón

    * @par am aut orLet r a El aut or de l a l et r a de l a canci ón*/publ i c voi d set Aut or Let r a( St r i ng aut or Let r a) {

    t hi s. aut or Let r a = aut or Let r a;}

    / * ** Regr esa el aut or de l a músi ca de l a canci ón* @r etur n El aut or de l a músi ca de l a canci ón*/

    publ i c St r i ng get Aut or Musi ca( ) {r et ur n aut or Musi ca;

    }

    / * ** Est abl ece el aut or de l a músi ca de l a canci ón* @par am aut orMusi ca El aut or de l a músi ca de l a canci ón*/

    publ i c voi d set Aut orMusi ca( St r i ng aut orMusi ca) {t hi s. aut orMusi ca = aut orMusi ca;

    }

    / * ** Regr esa el género de l a canci ón* @r etur n El género de l a canci ón*/

    publ i c St r i ng get Gener o( ) {

    r et ur n gener o;}

    / * ** Est abl ece el géner o de l a canci ón* @par am gener o El géner o de l a canci ón*/

    publ i c voi d setGenero( St r i ng genero) {t hi s. gener o = gener o;

    }

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    16/27

    188 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    / * ** Regr esa el ál bum de l a canci ón* @r et ur n El ál bum de l a canci ón*/

    publ i c St r i ng get Al bum( ) {r et ur n al bum;

    }

    / *** Est abl ece el ál bum de l a canci ón* @param al bum El ál bum de l a canci ón*/

    publ i c voi d set Al bum( St r i ng al bum) {t hi s. al bum = al bum;

    }

    / *** Regr esa l a di squer a de l a canci ón* @r etur n La di squera de l a canci ón

    */publ i c St r i ng get Di squer a( ) {r et ur n di squer a;

    }

    / * ** Est abl ece l a di squer a de l a canci ón* @par am di squera La di squera de l a canci ón*/

    publ i c voi d set Di squer a( St r i ng di squer a) {t hi s. di squer a = di squer a;

    }

    / * ** Regresa l a duraci ón de l a canci ón, como una cadena* @r et urn La dur aci ón de l a canci ón, como una cadena*/

    publ i c St r i ng get Dur aci on( ) {r et ur n dur aci on;

    }

    / * ** Est abl ece l a dur aci ón de l a canci ón, como una cadena* @par am dur aci on La duraci ón de l a canci ón, como una cadena*/

    publ i c voi d set Dur aci on( St r i ng dur aci on) {t hi s. dur aci on = dur aci on;

    }

    / * ** Regr esa l a f echa de l a canci ón, como una cadena* @r et urn La f echa de l a canci ón, como una cadena*/

    publ i c St r i ng get Fecha( ) {r et ur n f echa;

    }

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    17/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 189

    ITSON Manuel Domitsu Kono

    / * ** Est abl ece l a f echa de l a canci ón, como una cadena* @param f echa La f echa de l a canci ón, como una cadena*/

    publ i c voi d set Fecha( St r i ng f echa) {t hi s. f echa = f echa;

    }

    / * ** Rest abl ece l os val or es de l os at r i but os de l a cl ase de l a canci ón a sus* val ores i ni ci al es .* @param mappi ng La i nst anci a de Act i onMappi ng, el mapa empl eado para* sel ecci onar est a cl ase de acci ón.* @par am r equest La sol i ci t ud HTTP que se est á pr ocesando.*/

    publ i c voi d reset ( Act i onMappi ng mappi ng, Ht t pSer vl et Request r equest ) {cl ave = "" ;t i t ul o = "" ;i nt er pr et e = "" ;aut or Let r a = "" ;

    aut orMusi ca = "" ;genero = "" ;al bum = "" ;di squer a = " " ;dur aci on = " " ;f echa = "" ;

    }

    / * ** Est e método permi t e val i dar l os parámetr os del f ormul ar i o HTML de l a* pági na capt ur aCanci on. j sp* @param mappi ng La i nst anci a de Act i onMappi ng, el mapa empl eado para* sel ecci onar est a cl ase de acci ón.* @par am r equest La sol i ci t ud HTTP que se est á pr ocesando.* @r et ur n Regr esa l a l i st a de l os er r or es de val i daci ones*/

    publ i c Act i onEr r ors val i date( Act i onMappi ng mappi ng,Ht t pSer vl et Request r equest ) {

    Act i onEr r or s er r ores = new Act i onEr r or s( ) ;Val i dador val i dador = new Val i dador( ) ;

    / / Si no hay t í t ul oi f ( !val i dador . val i daSt r i ng( get Ti t ul o( ) ) )

    / / Agr ega el mensaj e de er r or a l a l i st a de er r or eser r or es. add( "t i t ul o", new Acti onMessage( "er r or s. no. t i t ul o") ) ;

    / / Si no hay i nt ér pr et e

    i f ( !val i dador . val i daSt r i ng( get I nt erpret e( ) ) )/ / Agr ega el mensaj e de er r or a l a l i st a de er r or eser r or es. add( "i nt er pr et e", new Act i onMessage( "err or s. no. i nt er pr et e") ) ;

    / / Si no hay aut or de l a l et r ai f ( ! val i dador. val i daSt r i ng( get Aut orLet ra() ) )

    / / Agr ega el mensaj e de er r or a l a l i st a de er r or eser r or es. add( "aut or Let r a", new Act i onMessage( "err or s. no. aut or Let r a") ) ;

    / / Si no hay aut or de l a músi ca

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    18/27

    190 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    i f ( ! val i dador. val i daSt r i ng( get Aut orMusi ca( ) ) )/ / Agr ega el mensaj e de er r or a l a l i st a de er r or eser r or es. add( "aut or Musi ca" , new Act i onMessage( "er r or s. no. aut or Musi ca" ) ) ;

    / / Si no hay géneroi f ( ! val i dador. val i daSt r i ng( get Genero() ) )

    / / Agr ega el mensaj e de er r or a l a l i st a de er r or eser r or es. add( "gener o" , new Act i onMessage( "er r or s. no. gener o" ) ) ;

    / / Si no hay ál bum  i f ( ! val i dador. val i daSt r i ng( get Al bum( ) ) )

    / / Agr ega el mensaj e de er r or a l a l i st a de er r or eserr ores. add( "al bum", new Act i onMessage( "er r ors . no. al bum") ) ;

    / / Si no hay di squer ai f ( ! val i dador. val i daSt r i ng( get Di squera() ) )

    / / Agr ega el mensaj e de er r or a l a l i st a de er r or eser r or es. add( "di squer a", new Act i onMessage( "er r or s. no. di squer a") ) ;

    / / Si no hay dur aci ón

    i f ( ! val i dador. val i daSt r i ng( get Duraci on( ) ) )/ / Agr ega el mensaj e de er r or a l a l i st a de er r or eser r or es. add( "dur aci on", new Act i onMessage( "er r or s. no. dur aci on") ) ;

    / / Si l a dur aci ón no es un ent er oel se i f ( ! val i dador. val i daI nt ( get Duraci on( ) ) )

    / / Agr égal o el mensaj e de er r or a l a l i st a de er r or eser r or es. add( "dur aci on", new Act i onMessage( "err or s. noI nt . dur aci on") ) ;

    / / Si no hay f echai f ( ! val i dador. val i daSt r i ng( get Fecha( ) ) )

    / / Agr égal o el mensaj e de er r or a l a l i st a de er r or eser r or es. add( "f echa", new Act i onMessage( "er r ors. no. f echa") ) ;

    / / Si l a f echa no es una Fechael se i f ( ! val i dador . val i daFecha( get Fecha( ) ) )

    / / Agr égal o el mensaj e de er r or a l a l i st a de er r or eser r or es. add( " f echa", new Act i onMessage( "er r or s. noFecha. f echa" ) ) ;

    r et ur n er r or es;}

    }

    6. Guarde el objeto de formulario.

    7. NetBeans crea una entrada en el archivo de configuración str ut s- conf i g 

    para el objeto de formulario usando un elemento dentro delelemento como se muestra:

     

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    19/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 191

    ITSON Manuel Domitsu Kono

    8. Abra el archivo Appl i cat i onResour ce. pr oper t i es (se encuentra en lacarpeta: sr c\ com\ amant eMusi caSt r ut s\ st r ut s) las entradas para cadauno de los mensajes de errores creados en el método validate() del objeto de

    formulario Canci onForm. j ava:

    err ors . no. t i t ul o=Fal t ó el t í t ul oer r or s. no. i nt er pr et e=Fal t ó el i nt ér pr et eer r or s. no. aut or Let r a=Fal t ó el aut or de l a l et r aer r ors . no. aut orMusi ca=Fal t ó el aut or de l a músi caer r ors . no. gener o=Fal t ó el géner oer r ors. no. al bum=Fal t ó el ál bumer r ors. no. di squer a=Fal t ó l a di squer aer r ors. no. dur aci on=Fal t ó l a dur aci óner r ors . noI nt . dur aci on=La dur aci ón debe ser un ent er oer r or s. no. f echa=Fal t ó l a f echaerr or s. noFecha. f echa=La f echa debe ser dd/ mm/ aaaa

    9. Utilice el asistente de NetBeans para crear la clase Val i dador . j ava en el

    paquete ut i l s y edítala para que tenga el siguiente código:

    Validador.java/ ** Val i dador . j ava** Cr eated on 14 de novi embre de 2006, 03: 25 PM

      ** @aut hor mdomi t su*/

    package ut i l s;

    i mpor t obj et osSer vi ci o. Fecha;

    / * ** Est a cl ase pr ovée de mét odos par a val i dar que l as cadenas de sus* par ámetr os repr esentan a dat os de l os t i pos especi f i cados por el método*/

    publ i c cl ass Val i dador {

    / * ** Val i da si su parámetr o es una cadena no vací a.* @par am s Cadena a veri f i car* @r et ur n True si l a cadena no es vací a o nul a, f al se en caso cont r ari o.*/

    publ i c bool ean val i daSt r i ng( St r i ng s) {r et ur n s ! = nul l && s. l engt h( ) > 0;

    }

    / * ** Val i da si su parámet r o es un ent er o.* @par am s Cadena a veri f i car* @r et ur n True si l a cadena repr esent a un ent er o, f al se en caso cont r ari o.*/

    publ i c bool ean val i daI nt ( St r i ng s) {

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    20/27

    192 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    try {i nt n = I nt eger . par seI nt ( s) ;

    }cat ch(Number Format Except i on nf e) {

    r et urn f al se;}r et ur n t r ue;

    }

    / * ** Val i da si su parámetr o r epr esenta una f echa en el f ormat o dd/ mm/ aaaa.* @par am s Cadena a veri f i car* @r eturn Tr ue si l a cadena r epr esent a una f echa en el f ormat o dd/ mm/ aaaa,* f al se en caso cont r ar i o.*/

    publ i c bool ean val i daFecha( St r i ng s) {try {

    Fecha f = new Fecha( s) ;}cat ch( I l l egal Ar gument Except i on i ae) {

    r et urn f al se;}r et ur n t r ue;

    }}

    Creación de una Clase de Acción

    Una clase de acción es una clase que hereda de la clase

    or g. apache. st r ut s. acti on. Acti on. Se emplea ejecutar una tarea de la lógicade los negocios en respuesta a una solicitud del cliente. Al concluir su tarea le pasa elcontrol a una página para mostrar los resultados. Aquí crearemos una clase de acción

    llamada ObtenCanci onForm. j ava para obtener una canción de la tabla cancionesde la base de datos musica.

    Para crear una clase de acción se sigue el siguiente procedimiento:

    1. Del menú principal de NetBeans 5.0, seleccione la opción Files/New File, presione las teclas Ctrl+ N o haga clic en el icono New File, como se muestra enla figura 7.11:

    2. Aparecerá la primera ventana del asistente para crear un nuevo archivo, figura7.15. En esta ventana del asistente seleccionaremos el tipo de archivo quedeseamos crear. Seleccionaremos la opción Web en el recuadro Categories: yla opción Struts Action en el recuadro File Types:, y luego presionaremos elbotón Next>.

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    21/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 193

    ITSON Manuel Domitsu Kono

    Figura 7.15

    3. Aparecerá la segunda ventana del asistente para crear un archivo, mostrada enla figura 7.16. En esta ventana estableceremos el nombre, ubicación y rutarelativa de la clase de acción.

    a) Establezca el nombre de la clase (Class Name): En este caso,“ObtenCancionAction”.

    b) Establezca el nombre del paquete en que se creará (Package): En estecaso, “acciones”.

    c) Establezca la ruta relativa de la clase de acción: En este caso:“/ObtenCancion”

    d) Deje el resto de los campos a sus valores prestablecidos.e) Presione el botón Next.

    4. Aparecerá la tercera ventana del asistente para crear un archivo, mostrada en lafigura 7.17. En esta ventana seleccionaremos el nombre del objeto de formulario

    asociado a esta clase de acción, su ámbito, si se hará validación de los datos yla página a la que se le pasará el control si hay errores de validación.

    a) Asegúrese que la casilla de verificación: Use Objeto de formulario (Use ActionForm Bean) este seleccionada.

    b) Seleccione el nombre del objeto de formulario ( ActionForm bean Name:), eneste caso CancionForm.

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    22/27

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    23/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 195

    ITSON Manuel Domitsu Kono

    c) Establezca el nombre de la clase (Class Name): En este caso,“ObtenCancionAction”.

    d) Deje sin modificar el campo de entrada para el nombre de la página a la quese le pasará el control en caso de errores de validación ( Input Action:)

    e) Asegúrece que el ámbito del objeto de formulario (Scope:) sea Session.

    f) Desmarque la casilla de verificación: Valide el objeto de formulario (Validate ActionForm Bean).g) Deje el resto de los campos a sus valores prestablecidos.h) Presione el botón Finish.

    10. Desaparecerá el asistente para crear un nuevo archivo y aparecerá el esqueletode la clase de acción creada. figura 7.18.

    Figura 7.18

    11. Edite la clase de acción Obt enCanci onAct i on. j ava con el código mostrado:

    ObtenCancionAction.java/ ** Obt enCanci onAct i on. j ava* @aut hor mdomi t su* @ver si on* Cr eated on 2 de novi embre de 2006, 09: 33 PM

      */

    package acci ones;

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    24/27

    196 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    i mpor t j avax. ser vl et . ht t p. Ht t pSer vl et Request ;i mpor t j avax. ser vl et . ht t p. Ht t pSer vl et Response;i mpor t j avax. ser vl et . ht t p. Ht t pSessi on;

    i mpor t or g. apache. st r ut s. act i on. Act i on;i mpor t or g. apache. st r ut s. act i on. Act i onFor m;i mpor t or g. apache. st r ut s. act i on. Act i onMappi ng;i mpor t or g. apache. st r ut s. act i on. Act i onFor war d;i mpor t or g. apache. st r ut s. act i on. Act i onMessage;i mpor t or g. apache. st r ut s. act i on. Act i onEr r or s;

    i mport obj et osFormul ari os. Canci onFor m;i mpor t del egadoNegoci oBD. Del egado;i mport obj et osNegoci o. Canci on;

    / * ** Est a cl ase de Acci ón permi t e obt ener una canci ón del catál ogo de canci ones* del programa AmanteMusi ca*/

    publ i c cl ass Obt enCanci onAct i on extends Act i on {/ / Const ant es si mból i cas par a l as pági nas J SP a l as que se l e pasar á el/ / contr olpr i vat e f i nal stati c St r i ng I NI CI O = "i ni ci o";pr i vat e f i nal st at i c St r i ng CANCI ON_EXI STENTE = "canci onExi st ent e" ;pr i vat e f i nal st at i c St r i ng CANCI ON_I NEXI STENTE = "canci onI nexi st ent e";pr i vat e f i nal st at i c St r i ng CANCI ON_NUEVA = "canci onNueva";

    / * ** Est e mét odo i mpl ement a l a acci ón de obt ener una canci ón del* cat ál ogo de canci ones.* @param mappi ng La i nst anci a de Act i onMappi ng, el mapa empl eado par a* sel ecci onar est a cl ase de acci ón.* @par am f or m El obj et o de f or mul ar i o ( opci onal ) par a est a sol i ci t ud.* @par am r equest La sol i ci t ud HTTP que se est á pr ocesando.* @par am r esponse La r espuest a HTTP que se est á procesando.* @t hr ows j ava. l ang. Except i on Si no se pudo obt ener l a canci ón* @r et ur n "i ni ci o" si se pr esi onó el bot ón Cancel ar en l a pági na* "capt ur aCl ave. j sp". "canci onExi st ent e" si l a canci ón exi st e en l a t abl a.*/

    publ i c Act i onForward execut e(Act i onMappi ng mappi ng, Act i onFor m f orm,Ht t pServl et Request r equest , Ht t pSer vl et Response r esponse)t hr ows Except i on {

    Ht t pSessi on sessi on = r equest . get Sessi on( ) ;Canci on canci on = new Canci on( ) ;

    / / Si el usuari o pr esi onó el bot ón Cancel ar en l a pági na

    / / "capt ur aCl ave. j sp"i f ( i sCancel l ed( r equest ) ) {

    / / Rest abl ece l as pr opi edades del obj et o de f ormul ari o Canci onFor m  / / a cadenas vací as par a que no muest r en nada en l a pági na

    / / capt ur aCl ave. j sp( ( Canci onFor m) f orm) . r eset ( mappi ng, r equest ) ;

    / / pasa el cont r ol a l a pági na "i ndex. j sp"r et ur n mappi ng. f i ndFor war d( I NI CI O) ;

    }

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    25/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 197

    ITSON Manuel Domitsu Kono

    / / Obt en l a cl ave de l a canci ón envi ada por l a pági na "capt ur aCl ave. j sp"St r i ng cl ave = ( ( Canci onFor m) f or m) . get Cl ave( ) ;

    / / Cr ea el obj et o para acceder a l a base de datosDel egado del egado = new Del egado( ) ;

    / / Obj et o par a r eci bi r l a canci ón obt eni daCanci on canci onObt eni da;

    / / Obt en l a canci ón del cat ál ogo de canci onescanci onObt eni da = del egado. obt en( new Canci on( cl ave) ) ;

    / / Si l a canci ón exi st e en l a base de dat osi f ( canci onObt eni da ! = nul l ) {

    / / Copi a sus at r i but os al bean canci oncanci on. set Cl ave( canci onObt eni da. get Cl ave( ) ) ;canci on. set Ti t ul o( canci onObt eni da. get Ti t ul o( ) ) ;canci on. set I nt er pr et e( canci onObt eni da. get I nt er pr et e( ) ) ;canci on. set Aut or Let r a(canci onObt eni da. get Aut orLet r a( ) ) ;

    canci on. set Aut or Musi ca( canci onObt eni da. get Aut or Musi ca( ) ) ;canci on. setGener o(canci onObt eni da. get Gener o( ) ) ;canci on. setAl bum( canci onObt eni da. getAl bum( ) ) ;canci on. set Di squer a( canci onObt eni da. get Di squer a( ) ) ;canci on. set Dur aci on( canci onObt eni da. get Dur aci on( ) ) ;canci on. set Fecha(canci onObt eni da. get Fecha( ) ) ;

    / / Al macena el bean canci on como una var i abl e de ámbi t o de sesi ón./ / El nombr e de l a vari abl e es canci on y est á di sponi bl e para l as/ / pági nas j sp usando l a acci ón sessi on. set At t r i but e( "canci on", canci on) ;

    / / Rest abl ece l as pr opi edades del obj et o de f or mul ari o.( ( Canci onFor m) f orm) . r eset ( mappi ng, r equest ) ;

    / / Pasa el cont r ol a l a pági na "despl i egaCanci on. j sp"r eturn mappi ng. f i ndForward(CANCI ON_EXI STENTE) ;

    }

    / / Si l a canci ón no exi st e/ / Si l a tar ea sel ecci onada es " Agr egar Canci ón"/ / pasa el cont r ol a l a pági na "capt ur aCanci on. j sp"i f ( sessi on. get At t r i but e( "t ar eaSel ecci onada") . equal s( "agr egar Canci on") )

    r et urn mappi ng. f i ndFor war d(CANCI ON_NUEVA) ;

    / / Si l a tarea sel ecci onada es " El i mi nar Canci ón"/ / Cr ea una l i st a de er r or es

    Act i onEr r or s er r or es = new Act i onEr r ors( ) ;/ / Agr égal e un mensaj e de er r orerr ores. add( Act i onEr r ors. GLOBAL_MESSAGE,

    new Act i onMessage( "er r or s. canci onI nexi st ent e") ) ;

    / / Guar da l a l i st a de er r or es en el obj et o request par a que est e/ / di sponi bl e par a l a pági na a l a que se l e va a pasar el cont r olsaveEr r or s( r equest , err or es) ;

    / / Rest abl ece l as pr opi edades del obj et o de f ormul ari o Canci onFor m

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    26/27

    198 Aplicaciones Web con Struts en NetBeans 5.0

    ITSON Manuel Domitsu Kono

    / / a cadenas vací as par a que no muest r en nada en l a pági na/ / capt ur aCl ave. j sp( ( Canci onFor m) f orm) . r eset ( mappi ng, r equest ) ;

    r et urn mappi ng. f i ndForward(CANCI ON_I NEXI STENTE) ;}

    }

    12. Guarde la clase de acción.

    13. NetBeans crea una entrada en el archivo de configuración struts-config para la

    clase de acción usando un elemento dentro del elemento como se muestra:

    . . .

    . . .

    14. A este elemento de acción hay que agregarle los elementos queespecifiquen las páginas JSP a las que se les pasará el control dependiendo dela ejecución del método execute() de la clase de acción. Esos elementos demuestran en el siguiente código.

    . . .

    . . .

  • 8/17/2019 Tutorial 7 - Aplicaciones Web Con Struts en NetBeans 5

    27/27

    Tutorial 7 Aplicaciones Web con Struts en NetBeans 5.0 199

    15. Agregue al archivo Appl i cat i onResour ce. pr oper t i es las entradas paracada uno de los mensajes de errores creados en la clase de acciónObt enCanci onAct i on. j ava y en el parámetro key del elemento del elemento :

    er r or s. canci onI nexi st ent e=Er r or , l a canci ón no exi st eer r ors . obt enCanci on=Er r or al l eer el cat ál ogo de canci ones.  

    De la misma manera creé el resto de páginas JSP y clases de acción, configure losdiferentes elementos en el archivo st r ut s- conf i g. xml  y agregue las entradas paralos mensajes de error en el archivo Appl i cat i onResour ce. pr oper t i es.