0% encontró este documento útil (0 votos)
21 vistas41 páginas

Struts 2 - Tutorials (Cameron McKenzie)

Este video muestra cómo crear un formulario de registro en Struts 2 utilizando anotaciones en la clase de acción para mapearla y validar los campos. Se redirige al usuario a una página de agradecimiento si la validación tiene éxito.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas41 páginas

Struts 2 - Tutorials (Cameron McKenzie)

Este video muestra cómo crear un formulario de registro en Struts 2 utilizando anotaciones en la clase de acción para mapearla y validar los campos. Se redirige al usuario a una página de agradecimiento si la validación tiene éxito.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 41

Struts 2 - Tutorials

Curso de Youtube – impartido por Cameron


McKenzie

1
Contenido

Video 1 – Simple Apache Struts 2.5 Example ______________________________________ 3


Video 3 – Struts Hello World Example v. 2.5 ______________________________________ 8
Video 4 – Struts Tags and the Struts 2 Taglib library for HTML in JSPs _________________ 11
Video 5 – Struts Form Handling and Annotation Action Mappings Tutorial _____________ 13
Video 6 – Form Validation Example Apache Struts Tutorial _________________________ 16
Video 7 – Annotations, Struts 2 Actions and Properties Files as Message Bundles Tutorial _ 19
Video 8 – Struts 2 i18n with ApplicationResources as MessageResources Properties File __ 23
Video 9 – Exception Handling with Struts 2 Annotations ___________________________ 27
Video 10 – Apache Struts Debugging Tools Tutorial v2.5 ___________________________ 30
Video 11 - Struts Input Validation with Annotation Based Validators __________________ 32
Video 12 - How to use Apache Struts interceptors tutorial __________________________ 35
Video 13 - Apache Struts Unit Testing with JUnit Tutorial ___________________________ 37
Video 14 - How to Integrate Struts and Ajax _____________________________________ 39

2
Struts 2 - Tutorials

Video 1 – Simple Apache Struts 2.5 Example

Para este ejemplo usaremos:

- Eclipse IDE for Enterprise Java and Web Developers


- Java DK 1.8 (8)
- Tomcat v9

En primer lugar, creamos un proyecto Maven simple, sin arquetipo:

En pom.xml añadimos una serie de dependencias y plugins:

3
pom.xml: https://drive.google.com/open?id=1-bb3h-
3gdrBl3QUmVKufZJ4ezmXi617f&authuser=kvdprin88%40gmail.com&usp=drive_fs

Una vez terminado con el pom, tenemos que crear el fichero web.xml, dentro del directorio
WEB-INF:

4
En este fichero creamos filter y filter-mapping:

web.xml: https://drive.google.com/open?id=1-
iAe3MJy2p4JBZ5G357tOF7bbP9ISsWo&authuser=kvdprin88%40gmail.com&usp=drive_fs

Vamos a crear el fichero index.html, donde ubicaremos la página inicial del proyecto:

Lo que hacemos aquí es crear una acción, a la que recurrir el formulario, una vez el usuario
pulse el botón submit. Mandará el valor del campo firstname.

5
Index.html: https://drive.google.com/open?id=1-ij4ch2Lx-
loXComlITcQhgSaj9oNcvR&authuser=kvdprin88%40gmail.com&usp=drive_fs

Pasamos a crear la clase que ejecutará la acción, se llamará HelloAction:

Creamos la propiedad llamada firsName (igual que en index.html), le asignamos sus getters y
setters.

Creamos un método llamado execute, que se ejecutará cuando se lance la acción relacionada
con esta clase, lo que haremos en este caso es imprimir por consola el nombre introducido en
el formulario index.html y devolver un String con “success”.

Nos tenemos que fijar en que hacemos uso de anotaciones, en primer lugar la anotación
@Action, que permite identificar la acción en concreto, lo hemos reflejado en index.html y en
segundo lugar @Result que capta el resultado y en este caso concreto, nos redirige a una
página llada results.jsp.

6
HelloAction.java: https://drive.google.com/open?id=1-
nUx7D5fw5PUQjXBQEhnUbDiw7bc5rxK&authuser=kvdprin88%40gmail.com&usp=drive_fs

Por último, tenemos que crear la página results.jsp a la que redirigimos al usuario, al
ejecutarse la operación con éxito:

En esta página usaremos las etiquetas de Struts, para poder hacer, necesitamos declarar un
prefijo, lo hacemos con el comando: <%@ taglib prefix="s" uri="/struts-tags"%>.
De esta manera le indicamos el IDE que todo lo que comience por el prefijo s, será una
etiqueta de struts.

Cuando se ejecuté la página, lo que hacemos el mostrar el valor de la propiedad firstName, la


que declarmos previamente en la clase HelloAction.

Result.jsp: https://drive.google.com/open?id=1-
s0SyWV64ytoJvx1SexaIte1Y4FT14_K&authuser=kvdprin88%40gmail.com&usp=drive_fs

El resultado de ejecución de este proyecto, es el siguiente:

7
Ficheros: https://drive.google.com/open?id=1-
Wp2Yor0r4W_g51xIjLuRDpO_qB6TYld&authuser=kvdprin88%40gmail.com&usp=drive_fs

Video 3 – Struts Hello World Example v. 2.5

8
Creamos un nuevo proyecto Maven simple:

Rellenamos el fichero pom.xml, web.xml, index.html, result.jsp con los mismos datos que el
video 1.

Creamos la clase HelloWorldAction:

9
El contenido de esta clase es similar a la del video 1, la diferencia es que no va a utilizar
anotaciones, si no que recurriremos al fichero de configuración de struts, como lo veremos
más adelante:

Por último, creamos el fichero struts.xml:

Aquí nos podemos fijar en que el nombre de action es “hello”, es el nombre que utilizamos en
index.html, cuando indicamos el action al enviar el formulario: <form
action="hello.action">

En la siguiente línea vemos que se mapea a la clase HelloWorldAction y el método.


Por último, si tenemos un resultado que devuelve “success”, nos redirige a la página result.jsp

Ficheros: https://drive.google.com/open?id=1-
ymNj6GRfzHXmgnw99rikohi04rIfXDW&authuser=kvdprin88%40gmail.com&usp=drive_fs

10
Video 4 – Struts Tags and the Struts 2 Taglib library for HTML in JSPs

En este video vamos a hacer uso de etiquetas struts en el fichero index, que en vez de html
pasará a ser jsp.

En primer lugar, copiamos el proyecto del video anterior y cambiamos el nombre.

Creamos el fichero index.jsp y le agregamos las dos primeras líneas del fichero result.jsp, en
concreto:

Añadimos el contenido de index.html:

Modificamos el contenido del fichero, para usar las etiquetas de struts:

Lo que podemos notar es que en action no tenemos que indicar toda la clase, si no únicamente
el action, puesto que está mapeado dentro del fichero struts.xml
También utilizamos label para escribir el texto anterior al campo editable.
Por último en submit podemos ver que se trata de una versión simplificada de la etiqueta.

11
Vamos a ver un par de etiquetas más, en concreto:

Lo que hacemos aquí es en primer lugar, crear una url que contiene una acción y un nombre,
en su interior colocamos un parámetro, que será el que se enviará a la clase que lo maneje.
Pasamos por parámetro el nombre (es el nombre de la propiedad de la clase) y su valor.

Por último, creamos un enlace, mediante la etiqueta <a> y referenciamos la url creada
anteriormente dentro de href.

El resultado es un enlace que, al ser pinchado, mandará Konstantin-link a la clase y se imprimirá en la


pantalla el mensaje, como si hubiéramos introducido estos valores en el campo de texto.

Ficheros:
https://drive.google.com/open?id=10IUP0THrxndJNLIdi8gwTmN_B8Y_AtAF&authuser=kvdprin
88%40gmail.com&usp=drive_fs

12
Video 5 – Struts Form Handling and Annotation Action Mappings Tutorial

En este video creamos un formulario de registro, donde recogeremos una serie de variables,
relacionadas con las propiedades de una clase.

El formulario se llamará register.jsp y tendrá el siguiente contenido:

Una vez terminado con el formulario de registro, tenemos que crear una clase nueva, vamos a
llamarla RegisterAction (la clase padre en este caso es ActionSupport):

13
El fichero tendrá el siguiente contenido:

Como podemos observar vamos a utilizar las anotaciones de struts2, en vez de usar el fichero
de configuración. La acción que registramos con esta clase será register y en caso de que el
método execute() devuelva “success”, nos redirigirá al fichero thankyou.jsp.

Más abajo vemos que tenemos registrado una variable de tipo long, es un requisito por
heredar de la clase ActionSupport.

Por último, en el método execute, vemos que imprimimos la edad de la persona y devolvemos
una constante (a la que podemos acceder por heredar de ActionSupport).

14
Ahora creamos el fichero thankyou.jsp al que se redirigirá al usuario, si la operación tiene
éxito:

Aquí lo único interesante en la propiedad <s:property value="personBean" /> lo que hace es


llamar al método ToString del objeto personBean.

Ficheros:
https://drive.google.com/open?id=10gXzlrIvyLZnU70WucMVMuYFKlbRNaYt&authuser=kvdpri
n88%40gmail.com&usp=drive_fs

15
Video 6 – Form Validation Example Apache Struts Tutorial

En este video añadiremos la posibilidad de validar los campos de formulario, creado


anteriormente.

Para añadir una validación, tenemos que hacer el uso del método validate(), dentro de la clase
RegisterAction. El nombre del método es predefinido y es algo así:

Como podemos observar, añadimos un error al campo personBean.firstname, esto hace


referencia al nombre de campo declarado en el fichero register.jsp:

Seguimos añadiendo validación para algunos campos:

16
Lo que ocurrirá si falla la validación, es que se va a pedir más información para input, de esta
manera se generará un resultado de tipo input, igual que hicimos con el success, tenemos que
capturar ese mensaje para tratar el caso:

Como podemos ver, creamos una especie de array de resultados contenidos dentro de la
etiqueta Results, en caso de que el resultado sea “input” redirigimos al usuario a la página de
registro de nuevo.

Si ahora introduzco esta información y trato de validad el formulario, ocurre lo siguiente:

Nos indica que campos están mal y lo que tenemos que hacer. Si queremos resaltar los
errores, podemos añadir la etiqueta <s:head> dentro de las etiquetas <head>, en el fichero
register.jsp:

17
Volvemos a realizar la prueba:

18
Video 7 – Annotations, Struts 2 Actions and Properties Files as Message
Bundles Tutorial

Vamos a crear un fichero de propiedades donde iremos almacenando las propiedades con las
que trabajaremos en el programa.

Creamos un nuevo paquete dentro de la carpeta src/main/resources, llamado


com.kvoziyan.struts, dentro del paquete un fichero llamado RegisterAction.properties:

El contenido será el siguiente:

Ahora modificamos el fichero register.jsp, antes de modificar nada lo tenemos así:

Tras la modificación se queda así:

Lo que hacemos es usar una clave para obtener los datos de estos campos, tampoco tenemos
que indicar el label, pues utiliza el valor que hay dentro del fichero properties.

19
Si ejecutamos el fichero register.jsp ahora, veremos que:

En vez de obtener los valores de las claves dentro del fichero properties, lo que hace es
imprimir el nombre de las claves, sin embargo, si pulsamos el botón Submit:

Vemos que ahora sí que interpreta bien los valores de las claves. La razón de esto está en que
para que interprete bien las claves, tenemos que pasar obligatoriamente a través de los
actions. De esta manera, cuando ejecutamos el register.jsp directamente, se hace una
interpretación directa del fichero y su contenido, sin embargo, cuando pulsamos el botón
Submit, pasamos por los actions correspondientes.

Para solucionarlo, creamos otro método dentro de la clase RegisterAction y lo asociamos con
la acción “display”, de tal manera que cuando alguien llame a esa acción a través del URL, nos
mandará al formulario, puesto que por defecto el método devuelve la cadena input y está
asociada en los resultados a la redirección a la página register.jsp:

20
El problema que tendremos ahora es la validación, la cadena input devuelta por el método
hace que salte la validación del formulario, por lo que el programa intentará validar el
formulario antes de ser mostrado, lo que terminará provocando un error:

Para saltar la validación, utilizaremos la etiqueta @SkipValidation en el método display, de tal


forma que no se hará la validación al ser mostrado el formulario.

Ahora, si tratamos de ejecutar directamente display.action, veremos que lo ejecuta


correctamente, además de obtener los valores de las claves el properties.

21
Para ejecutar la acción display, podemos crear un enlace en la página inicial que se encargará
de llamar el método correspondiente:

El resultado:

Al pinchar sobre el enlace, nos lleva al formulario de registro, a través de action, por lo que
toma bien los valores de las claves:

Ficheros:
https://drive.google.com/open?id=116wlcW07OW5tTbBQm7fM6yz3C7PZ9wMM&authuser=k
vdprin88%40gmail.com&usp=drive_fs

22
Video 8 – Struts 2 i18n with ApplicationResources as MessageResources
Properties File

Vamos a crear un nuevo fichero properties, llamado package.properties, dentro del cual
colocaremos una propiedad a la que recurriremos en el fichero de inicio:

Accedemos a esta propiedad desde register.jsp:

Como ya sabemos si no pasamos por action, esto no va a funcionar, nos mostrará el texto del
name:

Al pinchar sobre el enlace que ejecuta display:

23
Vamos a ver cómo realizar lo mismo, utilizando el fihero de recursos.
Para ello, en primer lugar, nos dirigimos al fichero web.xml y añadimos las siguientes líneas:

Ahora creamos el fichero de properties dentro de la carpeta src/main/resources y añadimos


contenido “global” que será accesible sin tener que pasar por actions:

Añadimos una línea más en el fichero register.jsp, pero en esta vez referenciando
global.greeting:

24
Ahora, nada más ejecutar el fichero register.jsp, vemos que coge los datos guardados en el
fichero properties sin tener que pasar por actions:

Vamos a localizar el contenido de la página. Para ello creamod otro fichero de


ApplicationResources, pero terminado en _fr (de Frances):

Podemos observar que aquí, la variable global greeting toma el valor de “Bonjour”.

25
Ahora nos dirigimos al fichero register.jsp y añadimos un enlace:

Como podemos observar, el url lleva un parámetro llamado “request_locale” y un id de


localización, que en este caso es fr. Enseguida creamos un enlace con etiqueta a, el resultado
es:

Al pulsar sobre el enlace, vemos lo siguiente:

Lo que ocurre es lo siguiente:

- Se ejecuta la action “display” que muestra los nombres de los textfields, referenciados
por sus claves.
- El URL, mediante el parámetros pide una versión localizada de la página, en este caso,
fr, lo que cambia el valor asociado a la propiedad global “global.greeting”.

Ficheros:
https://drive.google.com/open?id=11XwdDjnL80eCpGc3TtyzbftZ9H0HIBfl&authuser=kvdprin8
8%40gmail.com&usp=drive_fs

26
Video 9 – Exception Handling with Struts 2 Annotations

En esta lección veremos cómo manejar excepciones.

Antes de nada, vamos a crear una redirección dentro de la clase RegisterAction, que nos
mandará a la página error.jsp en caso de encontrar errores:

Podemos manejar las excepciones tanto a nivel de clase, mediante ExceptionMappgin, por
ejemplo:

O sobre un método:

También podemos manejar varias excepciones desde la misma clase:

27
Como hemos visto, al producirse un error, la aplicación nos tendrá que redirigir a la págin
error.jsp, procedemos a crearla:

En su contenido indicamos el nombre de la excepción, accediendo a la propiedad “exception”


y los detalles (stack trace), mediante la propiedad exceptionStack.
Por último, recurrimos a javaScript para imprimir el nombre de la propiedad en el log de la
consola.

Vamos a añadir una URL que haga saltar la excepción, por llamar action “badcall”:

28
Ejecutamos la aplición:

Al pinchar sobre el enlace, el método “badcall” lanzará una excepción y lo capturará el


ExceptionMapping que se aplica directamente sobre la misma acción registrada para el mismo
método:

El resultado:

Revisamos la consola de navegador:

Ficheros:
https://drive.google.com/open?id=1214SLeK67yyhtiVJuxWsZw6swM244eiz&authuser=kvdprin
88%40gmail.com&usp=drive_fs

29
Video 10 – Apache Struts Debugging Tools Tutorial v2.5

En este video veremos algunas de las herramientas de debugging que incorpora el propio
Struts.

El primer paso para poder utilizar interceptores de Struts, es habilitar el modo desarrollador.
Hay varias formas de hacerlo, nosotros lo haremos a través del fichero web.xml:

Añadimos un plugin que necesitaremos para estos fines:

No nos olvidamos de actualizar el proyecto a través de Maven.

En el fichero register.jsp, añadimos un enlace con action register, pero con un namespace
especial:

Al pinchar sobre este enlace, veremos lo siguiente:

30
Esto nos permite explorar nuestra aplicación, buscando todo tipo de datos y viendo el
funcionamiento.

Ficheros: https://drive.google.com/open?id=132RKzH9u9oiqMPjKODurT9gt--
0ElZq6&authuser=kvdprin88%40gmail.com&usp=drive_fs

31
Video 11 - Struts Input Validation with Annotation Based Validators

En este video veremos la validación mediante las anotaciones.

En primer lugar, comentamos el método validate, para que no se ejecute:

Vamos a añadir algunas propiedades más al objeto Person:

Añadimos los getters y los setters correspondientes y recreamos el método toString().

Añadimos el valor de nuevas propiedades en RegisterAction.properties:

32
Añadimos los campos al fichero register.jsp:

Ahora tenemos que editar la claseRegisterAction, añadimos la etiqueta @Validation al método


execute y especificamos distintos tipos de validación para cada campo:

Como podemos observar, struts cuenta con plantillas de validación específicas para ciertos
campos, como la página web y el email. Para el teléfono, utilizamos una expresión regular y
para la edad usamos la plantilla de comprobación para int.

33
Si lanzamos la aplicación, podemos observar la validación en acción:

Ficheros: https://drive.google.com/open?id=13Hujv3Vr-W-
jqPhBXrf7MMCMC9rkiuKz&authuser=kvdprin88%40gmail.com&usp=drive_fs

34
Video 12 - How to use Apache Struts interceptors tutorial

Los interceptores son herramientas que capturan cierta información que ocurre mientras se
ejecuta el programa.

Para que esto tengo lugar, lo tenemos que declarar en nuestra clase Action:

Ahora tenemos que agregar la dependencia de log4j, para ello, escribimos lo siguiente en
nuestro pom.xml:

Una vez actualizado el proyecto desde Maven, tenemos que crear el fichero log4j2.xml dentro
de la carpeta resources:

35
Si ahora ejecutamos la aplicación, veremos mensajes informativos acerca de la ejecución de
distintas partes de código:

Ficheros:
https://drive.google.com/open?id=148m7L7G8U_txglTVCruS5xFbq0v8p9lu&authuser=kvdprin
88%40gmail.com&usp=drive_fs

36
Video 13 - Apache Struts Unit Testing with JUnit Tutorial

En este video veremos el asunto de pruebas unitarias con Junit y Struts.

Antes de nada, nos dirigimos al pom.xml y añadimos algunas dependencias:

Creamos una clase nueva, en src/test/java, la clase se llamar-a RegisterActionTest y tendrá las
siguientes características:

37
En el interior de la clase, creamos los métodos que se encargarán de comprobar algunos casos.
Vamos a probar dos, cuando no introducimos ningún dato y cuando rellenamos todos los
campos, en ambos casos comprobamos que el String que devuelve el método execute, es el
que corresponde.

En primer caso, como no introducimos ningún dato, esperamos que nos devuelve un input,
para volver a pedir los datos, tras no superar la validación. En el segundo, esperamos que nos
devuelva success, puest todos los campos están rellenados correctamente.

Pinchamos con el botón derecho sobre la clase y escogemos la opción, ejecutar como Junit
Test:

Observamos el resultado:

Los ficheros:
https://drive.google.com/open?id=159Yo0Mh45Z3reIeysK2teDj1UfKKuifJ&authuser=kvdprin8
8%40gmail.com&usp=drive_fs

38
Video 14 - How to Integrate Struts and Ajax

Para este tutorial vamos a crear un proyecto Maven nuevo, con las siguientes características:

En el fichero pom.xml añadimos todas las dependencias necesarias:

39
Típicamente, como en todos los proyectos de struts, creamos el fichero web.xml:

Vamos a crear dos páginas, la primera es ajax-link, este es su contenido:

En esta página podemos observar que tenemos añadidos dos prefijos, uno s, para las etiquetas
de struts y el otro sj para las etiquetas de jquery.

Posteriormente podemos ver que declaramos una url que apunta a una action y tiene un
parámetro llamado handle.

40
Justo debajo, colocamos un enlace Ajax que hace referencia al url declarado anteriormente y
cuyo target es un div que vamos a declarar en este momento.

Por último, declaramos ese div, que es donde irá el resultado de interacción con Ajax.

Pasamos a crear la clase action, asociada a la acción dentro de la página ajax-link:

En esta clase podemos ver la acción asociada y que se ejecutará si el resultado es success.
También tenemos la propiedad handle, que usaremos para almacenar la información que pasa
entre el ajax-link y results. De esta manera, cuando se presione sobre el enlace en la clase ajax-
link, el parámetro que lleva en su interior: <s:param name="handle"> @kvoziyan </s:param>
será mapeado a la propiedad de la clase, por lo que podremos imprimirla en la consola.

Por último, creamos el fichero resutls.jsp donde tendremos únicamente una etiqueta <h3>,
con el siguiente contenido:

Solo mandamos una etiqueta <h3> con la propiedad handle, ya que Ajax funciona
intercambiando partes de la página web de manera asíncrona, sin recargar todo el contenido.

Ficheros: https://drive.google.com/open?id=15e3BmbKy70VehqUIMJ8AIB1vcIZT-
mh6&authuser=kvdprin88%40gmail.com&usp=drive_fs

41

También podría gustarte