You are on page 1of 50

UNIVERSIDAD AUTONOMA DE CHIAPAS

FACULTAD DE CONTADURIA Y ADMINISTRACIN

LICENCIATURA EN SISTEMAS COMPUTACIONALES.

APLICACIONES WEB

M.C FELIPE ANTONIO ROMAN ALBORES

STRUTS-TAGS
EDUARDO PREZ RUZ

TUXTLA GUTIERREZ CHIAPAS, A 01 DE OCTUBRE DEL 2013.

Contenido
RESUMEN ............................................................................................................................................ 4
INCLUDE. ............................................................................................................................................. 5
LABEL. ................................................................................................................................................ 10
Action (Acciones)............................................................................................................................... 11
ACTIONERROR ................................................................................................................................... 12
ACTIONMESSAGE .............................................................................................................................. 14
FILE .................................................................................................................................................... 15
FORM................................................................................................................................................. 18
COMPONENT ..................................................................................................................................... 18
HEAD.................................................................................................................................................. 18
HIDDEN .............................................................................................................................................. 19
I18N ................................................................................................................................................... 19
IF-ELSEIF-ELSE .................................................................................................................................... 20
Password ........................................................................................................................................... 22
Property............................................................................................................................................. 22
Push ................................................................................................................................................... 23
Param ................................................................................................................................................ 24
Radio.................................................................................................................................................. 24
Reset.................................................................................................................................................. 26
CHECKBOXLIST................................................................................................................................... 26
COMBOBOX ....................................................................................................................................... 29
DOUBLESELECT .................................................................................................................................. 31
DATE .................................................................................................................................................. 32
Select ................................................................................................................................................. 34
Set...................................................................................................................................................... 35
Submit ............................................................................................................................................... 35
Text .................................................................................................................................................... 36
TextArea ............................................................................................................................................ 38
TextField ............................................................................................................................................ 38
Struts Tag Generator ......................................................................................................................... 40
INPUTTRANSFERSELECT: ................................................................................................................... 42
ITERATOR:.......................................................................................................................................... 43
MERGE:.............................................................................................................................................. 45
OPTGROUP: ....................................................................................................................................... 47
CONCLUSION.. 48
REFERENCIAS..49

Tabla de Figuras
Fig. 1 Implementacin del INCLUDE............................................................................................ 8
Fig. 2 configuraciones del strutx.xml, index.jsp, tags.jsp y la clase.jav ....................................... 9
Fig. 3 configuracion de index.jsp y struts.xml ........................................................................... 11
Fig. 4 Label generado de la configuracin anterior. .................................................................. 11
Fig. 5 configuracion de los 3 componentes(.xml, .jsp y .java) ................................................... 12
Fig. 6 Ejecucin con xito del ACTION ....................................................................................... 12
Fig. 7 configuracin de los 3 elementos principales para el ACTIONERROR ............................. 13
Fig. 8 ACTIONERROR (no concluido).......................................................................................... 14
Fig. 9 Configuracion final de los elementos del ACTIONMESAGE ............................................. 15
Fig. 10 ACTIONMESSAGE en ejecucion (no concluido)............................................................. 15
Fig. 11 Configuracion de los componentes y ejecucin del tag FIELD ...................................... 18
Fig. 12 Estructura e implementacin del HEAD ........................................................................ 19
Fig. 13 Estructura del HIDDEN ................................................................................................... 19
Fig. 14 i18n.............................................................................................................................. 20
Fig. 15 Configuracion de los componentes del Optiontransferselect ....................................... 22
Fig. 16 Accion.java y resultado.jsp para el tag PROPERTY........................................................ 23
Fig. 17 Estructura del RESET ...................................................................................................... 26
Fig. 18 CHECKBOXLIST en ejecucion .......................................................................................... 29
Fig. 18 COMBOBOX en ejecucin .............................................................................................. 31
Fig. 19 SELECT en ejecucin. ..................................................................................................... 34
Fig. 20 funcin SET en ejecucin. .............................................................................................. 35
Fig. 21 Ejecucin del elemento SUBMIT.................................................................................... 36

RESUMEN
Hoy en da es de gran importancia saber que para el desarrollo de
aplicaciones web, se necesita que estas puedan ser creadas de una manera
spida y por supuesto eficiente, es ah donde entra lo que hoy en da es conocido
como STRUTS2 que no es ms que un framework que nos ayuda en la realizacin
de aplicaciones web de forma ms sencilla, adems struts2 hace uso de un
modelo especial llamado Modelo Vista Controlador, que para ser sincero al
principio no entenda de su significado pero al realizar esta prctica me ayudo ya
que me base de distintas fuente en donde mencionaban este modelo, y comprend
que este modelo hace una separacin entre los componentes para la
re[presentacin de la informacin y la interfaz del usuario permitindonos as
poder tener un mejor control de las acciones a realizar para que sean vistas desde
la interfaz de usuario; lo primero que se debe hacer es configurar los struts
mediante archivos XML, ya que son los que se encargan de hacer la mayor parte
del
trabajo.
Pero struts2 no trabaja solo posee varia herramientas y etiquetas o Tags,
con los que podemos trabajar y que es lo que habla esta prctica, algunas
resultaron fcil de implementar y de comprobar su resultado, otras no se logr
obtener el resultado deseado, adems algunos tags como el i18n que me resulto
difcil entenderle pero investigando un poco ms encontr que son interceptores
que nos ayudan o nos brindan un soporte de idioma para nuestras aplicaciones;
adems de ese elemento hubieron ms que al igual no entenda el concepto y
peor an como implementarlos, aunque fueron pocos pues la mayora si se pudo
comprobar y examinar los resultados.

INCLUDE.
Funcin:
Parecido a action con el parmetro executeResult, pero, a diferencia de este,
permite incluir cualquier recurso. Como el include de JSP tambin se le pueden
pasar parmetros para que sea dinmico con etiquetas param, pero estos valores
no se acceden como propiedades de ValueStack, sino como parmetros de la
peticin.
Sintaxis:
INDEX.JSP
%-Document

: index

Created on : 28/09/2013, 12:22:01 PM


Author

: MARIO ARTURO

--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>JSP Page</title>
</head>
<body>

TAGS-INCLUDE.JSP
<%-Document

: tags-include

Created on : 28/09/2013, 06:43:24 PM


Author

: MARIO ARTURO

--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">

STRUTS.XML
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD
Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts2.0.dtd">
<struts>
<package name="mi-paquete" extends="struts-default">
<action name="*" class="ejemTags">
<result name="success">

index.jsp </result>

</action>
<action name="Hola" class="ejemTags">

EJEMTAGS.JAVA
import static com.opensymphony.xwork2.Action.SUCCESS;
import com.opensymphony.xwork2.ActionSupport;
//import org.apache.struts2.views.jsp.IncludeTag;
public class ejemTags extends ActionSupport {
private String web;

public String getContenido()


{
return web;
}
WEB.XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<select-class>org.apache.struts2.views.jsp.ui.InputTransferSelectTag</select-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
7

A continuacin unas impresiones de pantalla de la realizacin de este TAGS.

Fig. 1 Implementacin del INCLUDE


STRUTS

INDEX.JSP

TAGS.JSP

CLASE JAVA

Fig. 2 configuraciones del strutx.xml, index.jsp, tags.jsp y la clase.jav

LABEL.
Funcin:
Sirve para crear etiquetas como el HTML pero a diferencia que se puede
implementar dentro de un formulario.
Sintaxis:
INDEX DEL LABEL
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
STRUTS DEL LABEL
<head>
http-equiv="Content-Type"
<?xml <meta
version="1.0"
encoding="UTF-8"?>content="text/html; charset=UTF-8">

<!DOCTYPE struts PUBLIC


"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources"
/>
<package name="default" namespace="/" extends="struts-default">

10

Fig. 3 configuracion de index.jsp y struts.xml

Fig. 4 Label generado de la configuracin anterior.

Action (Acciones)

<action name="Nombre_Accion" class="Paquete.Nombre_Clase">


<result name="error">/pagina_error.jsp</result>
<result name="success">/pagina_exito.jsp</result>

11

</action>

Las acciones son las encargadas de definir cual ser la clase que se
encargar de procesar la peticin solicitada y cual ser la respuesta dependiendo
del resultado. Estas acciones se registran dentro de struts.xml.

La estructura bsica de una accin es la siguiente:


Fig. 5 configuracion de los 3 componentes(.xml, .jsp y .java)
En ejecucin:

Fig. 6 Ejecucin con xito del ACTION

ACTIONERROR
Muestra los errores que se produjeron en las acciones, si es que existen.
Podemos aadir errores utilizando el mtodo addActionError(String error) de la
interfaz ValidationAware, que ActionSupport implementa. Los mtodos y
propiedades de ValidationAware tambin estarn disponibles en la vista, por lo
que es posible en su lugar comprobar si existen errores con el mtodo
hasActionErrors() e iterar directamente sobre la coleccin actionErrors.
xxxx.java
12

1.
2. import com.opensymphony.xwork2.ActionSupport;
3.
4. @SuppressWarnings("serial")
5. public class Accion extends ActionSupport {
6.
public String execute() {
7.
addActionError("Oh dios mo, un error!");
8.
return ERROR;
9.
}

10. }
xxxx.jsp
1.
2.
3.
4.
5.
6.
7.

<%@ taglib uri="/struts-tags" prefix="s"%>


<html>
<body>
<s:actionerror />
</body>
</html>

Fig. 7 configuracin de los 3 elementos principales para el ACTIONERROR


En ejecucin (no terminado)

13

Fig. 8 ACTIONERROR (no concluido)

ACTIONMESSAGE
Similar a actionerror, pero en lugar de errores en la accin sirve para
mostrar mensajes de la accin, los cuales aadimos utilizando el
mtodoaddActionMessage(String mensaje) de la interfaz ValidationAware. Como
el anterior, tambin podramos utilizar el mtodo hasActionMessages() para
comprobar la existencia de mensajes e iterar sobre la coleccin de
strings actionMessages.
org.apache.struts2.views.jsp.ui.ActionMessageTag
Accion.java
1.
2.
3.
4.
5.
6.
7.
8.
9.

import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class Accion extends ActionSupport {
public String execute() {
addActionMessage("Tengo un mensaje para usted.");
return SUCCESS;
}
}

resultado.jsp
1.
2.
3.
4.
5.
6.
7.

<%@ taglib uri="/struts-tags" prefix="s"%>


<html>
<body>
<s:actionmessage/>
</body>
</html>

14

Fig. 9 Configuracion final de los elementos del ACTIONMESAGE


En ejecucin (no terminado)

Fig. 10 ACTIONMESSAGE en ejecucion (no concluido)


FILE
Muestra un campo file de HTML. Para facilitarnos la vida podemos
aprovechar el interceptor fileUpload que se encuentra en la seleccin de
interceptores por defecto (defaultStack) y que funciona de forma parecida al
interceptor param. Basta crear setters y getters en la accin para las nuevas
propiedades nombre (el archivo en si), nombreContentType (el tipo MIME del
archivo subido) o nombreFileName (el nombre del archivo subido) para tener
acceso a estos valores en la accin.
org.apache.struts2.views.jsp.ui.FileTag
accept: atributo del mismo nombre de HTML que permite indicar los tipos MIME
que acepta el campo.
Index.jsp

15

Accion.java

16

Resultado.jsp

17

Fig. 11 Configuracion de los componentes y ejecucin del tag FIELD


FORM
Crea un elemento form de HTML.
org.apache.struts2.views.jsp.ui.FormTag
action: Accin a la que se enviar la peticin con los datos del formulario.
Tambin se puede enlazar otras pginas o servlets. Si no utilizamos el atributo
para especificar el destino se utiliza la misma pgina del formulario.
namespace: Espacio de nombres al que pertenece la accin a la que se enviar
la peticin. Por defecto se utiliza el espacio de nombres actual.
validate: Si queremos validar los campos del formulario antes de enviarlos.

COMPONENT
Utilizado para crear nuestras propias etiquetas sin tener que recurrir a la API de
etiquetas de JSP.
org.apache.struts2.views.jsp.ui.ComponentTag
HEAD
Etiqueta auxiliar que se coloca dentro de la etiqueta head de HTML y se encarga de
generar distintos elementos necesarios para otras etiquetas, como las etiquetas para la
carga de hojas de estilo o scripts.
org.apache.struts2.views.jsp.ui.HeadTag

18

Fig. 12 Estructura e implementacin del HEAD


HIDDEN
Crea un campo oculto.
org.apache.struts2.views.jsp.ui.HiddenTag

Fig. 13 Estructura del HIDDEN


I18N
Carga un archivo de recursos adicional con la traduccin de nuestros mensajes y
los coloca en ValueStack de forma que puedan ser accedidos fcilmente por el
cdigo que se encuentre dentro de la etiqueta.
org.apache.struts2.views.jsp.I18nTag
name (requerido): Nombre del ResourceBundle a cargar.

19

Fig. 14 i18n
IF-ELSEIF-ELSE
La tpica sentencia condicional.
org.apache.struts2.views.jsp.IfTag
org.apache.struts2.views.jsp.ElseIfTag
org.apache.struts2.views.jsp.ElseTag
test (requerido para if y elseif): la expresin a comprobar

Optiontransferselect
Crea un componente consistente en dos selects cuyos elementos pueden
traspasarse de uno a otro.
Ejemplo: index

20

Optiontransfer.jsp

Optiontransfer.java

21

Struts

Fig. 15 Configuracion de los componentes del Optiontransferselect


Password
Crea un elemento password de HTML.
Ejemplo:
resultado.jsp

Property
Muestra una propiedad de ValueStack u otro objeto de ActionContext.
22

Ejemplo:
Accion.java

resultado.jsp

Fig. 16 Accion.java y resultado.jsp para el tag PROPERTY

Push
Aade el valor especificado a lo alto de la pila.
Ejemplo:

23

RadioTag.jsp

Strust

Param
Utilizada para aadir parmetros a otras etiquetas.
Radio
Crea un conjunto de radio buttons HTML.

24

Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7.

private List<String> lenguajes;

8.
9.

public List<String> getLenguajes() {

10.
11.

return lenguajes;
}

12.
13.

public String execute() {

14.

lenguajes = new ArrayList<String>();

15.

lenguajes.add("Python");

16.

lenguajes.add("Java");

17.

lenguajes.add("Ruby");

18.

lenguajes.add("C#");

19.

lenguajes.add("C++");

20.

lenguajes.add("Lisp");

21.

return SUCCESS;

22.

23. }

Resultado.jsp
1. <%@ taglib uri="/struts-tags" prefix="s"%>
2.
3. <html>
4. <body>
5. <s:form>
6.

<s:radio label="Selecciona tu lenguaje preferido" list="lenguajes" />

7.

<s:submit value="Enviar" />


25

8. </s:form>
9. </body>
10. </html>

Reset
Crea un botn que borra los datos introducidos en el formulario.
resultado.jsp
1. <%@ taglib uri="/struts-tags" prefix="s"%>
2.
3. <html>
4. <body>
5.
6. <s:form action="Otro">
7.

<s:textfield label="Nombre" />

8.

<s:password label="Contrasea" />

9.

<s:reset value="Borrar" />

10.

<s:submit value="Enviar" />

11. </s:form>
12.
13. </body>
14. </html>

Fig. 17 Estructura del RESET

CHECKBOXLIST
Crea una lista de checkboxes relacionados (todos con el mismo atributo
name). Esto implica que el valor del elemento no ser un booleano indicando si
est marcado o no, como en el caso de checkbox, sino una lista con los valores
marcados.
SINTAXIS

26

checklist.jsp

Struts.xml

27

Hola.java

28

Cdigo en ejecucin:

Fig. 18 CHECKBOXLIST en ejecucion


COMBOBOX
Crea una combinacin de select y caja de texto. El valor de la caja de texto
se auto rellena segn el elemento seleccionado en el select.
emptyOption: Indica si queremos aadir una opcin vaca.
combobox.jsp

Struts.xml

29

Hola.java

30

Cdigo en ejecucin:

Fig. 18 COMBOBOX en ejecucin

DOUBLESELECT
Crea dos elementos select HTML, con el segundo de ellos modificando sus
valores dependiendo del valor seleccionado en el primero.
doubleList (requerido): Lista con los valores que tendr el segundo select.
doubleMultiple: Determina si en el segundo select se pueden seleccionar varios
valores o solo uno.
doubleName (requerido): Nombre del elemento.
list (requerido): Lista con los valores que tendr el primer select.
Resultado.jsp

31

Artista.java

Accin.java

DATE
Permite mostrar una fecha almacenada en una cierta variable indicando
opcionalmente el formato a utilizar.
format: Formato a utilizar para mostrar la fecha. Si queremos usar siempre el
mismo formato podemos crear un archivo properties con una entrada
struts.date.format. Por defecto se utiliza el formato DateFormat.MEDIUM.
32

Date.jsp

Accin.java

33

Select
Esta funcin nos sirve para seleccionar datos por medio de un listado desplegable
que al darle click sobre algn campo este selecciona y enva la informacin
seleccionada.
Sintaxis: <s:select label="What's your favor search engine"
headerKey="-1" headerValue="Select Search Engines"
list="searchEngine"
name="yourSearchEngine" />

Cdigo del select

Funcin Select en funcionamiento

Fig. 19 SELECT en ejecucin.

34

Set
La funcin set nos sirve para colocar un dato mediante nosotros lo definamos
dentro del cdigo de la aplicacin.
Cdigo de la funcin set

Funcionamiento de set

Fig. 20 funcin SET en ejecucin.

Submit
Esta funcin nos sirve para borrar todos los datos ingresados en un cuadro
de texto o bien enviar los datos de un formulario.

35

Cdigo de la funcin

Funcionamiento de Submit

Fig. 21 Ejecucin del elemento SUBMIT


Text
Esta funcin sirve para imprimir datos en forma de texto sin formato o bien
predefinindole un formato mediante el cdigo.
36

Cdigo de la funcin Text

Funcionamiento del Text

37

TextArea
Esta funcin nos sirve para imprimir datos en forma de texto pero en un
campo de texto de varias columnas y filas que nosotros podamos definir el ancho
y largo del cuadro de texto que se ver en pantalla.
Cdigo de la funcin TextArea

Funcionamiento del TextArea

TextField
Esta funcin permite ingresar datos de longitud que se le puede definir y lo
que se le ingrese poder guardarlo y enviarlo, esto se utiliza a la hora de hacer un
registro de datos mediante un formulario.
38

Cdigo de la funcin TextField

Funcionamiento del TextField

39

Struts Tag Generator


Esta librera sirve para ordenar una serie de palabras, declaradas en la instruccin
Generator, como se logra apreciar en la primera imagen
Cdigo de cmo funciona la Librera Generator en Struts2

40

Struts Tag Url

Cdigo de cmo funciona la Librera Url en Struts2

Esta librera sirve para crear un link, o redireccionar de una manera diferente el
acceso a una pgina.

41

INPUTTRANSFERSELECT:
Crea un componente consistente en un select de seleccin mltiple, un
campo de texto y distintos botones que permiten aadir, eliminar y ordenar los
valores.
INDEX.

Struts.

42

Lib2.java.

ITERATOR:
Para iterar sobre colecciones. En cada iteracin el objeto recuperado se coloca en
ValueStack para poder acceder a sus propiedades fcilmente.
org.apache.struts2.views.jsp.IteratorTag
Status: Crea una instancia de IteratorStatus con el nombre indicado. Este objeto
expone algunas propiedades muy tiles como index (ndice del elemento actual),
first (booleano que indica si es el primero elemento), even (booleano que indica si
es impar), last (booleano que indica si es el ltimo elemento) u odd (booleano que
indica si es par).

43

Index

.xml

.java

44

MERGE:
Crea un nuevo iterador unin de los distintos iteradores pasados como
parmetro mediante etiquetas param.
Index.jsp

struts.xml

45

Merge.java

46

OPTGROUP:
Crea un nuevo elemento HTML optgroup (un grupo de opciones para un elemento select).

Index.jsp

Struts.xml

47

.java

48

CONCLUSION
Como conclusin a la que llego al haber realizado este [practica es que usar
struts2 y sus componentes resultan al parecer mucho ms sencillo claro hay algunas
excepciones, pero la mayor parte struts2 nos brinda ms facilidad en la elaboracin del
aplicaciones web, sin tener que esforzarse demasiado adems de que hoy en da usar
este framework resulta estar a la vanguardia pues como mencione en el resumen hace
uso del Modelo Vista Controlador(MVC) que como mencione nos proporciona una mayor
agilidad en cuanto al manejo de los datos separando cada elemento que lo conforma, es
decir los XML, los struts y las clases, en donde se puede trabajar separadamente
prestando principal atencin en el struts.xml pues es ah donde se realiza la mayor parte
de las instrucciones.
Para finalizar no debemos de dejar fuera cada elemento que forma parte este
framework pues todos son de gran importancia y es necesario aprender a usarlos pues
parte de muchos ellos se emplean en las aplicaciones webs.

49

Referencias
Alex. (Junio de 2011). Tutoriales de Programacion Java. Obtenido de Tutoriales de Programacion
Java: http://www.javatutoriales.com/2011/06/struts-2-parte-1-configuracion.html
Ral Gonzlez Duque. (Abril de 2004). Mundo geek. Obtenido de Mundo geek :
http://mundogeek.net/archivos/2009/02/13/etiquetas-struts-2/

50

You might also like