Beruflich Dokumente
Kultur Dokumente
APLICACIONES WEB
STRUTS-TAGS
EDUARDO PREZ RUZ
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
: MARIO ARTURO
--%>
TAGS-INCLUDE.JSP
<%-Document
: tags-include
: MARIO ARTURO
--%>
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;
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
INDEX.JSP
TAGS.JSP
CLASE JAVA
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">
10
Action (Acciones)
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.
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.
13
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.
14
15
Accion.java
16
Resultado.jsp
17
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
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
Property
Muestra una propiedad de ValueStack u otro objeto de ActionContext.
22
Ejemplo:
Accion.java
resultado.jsp
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.
8.
9.
10.
11.
return lenguajes;
}
12.
13.
14.
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.
7.
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.
8.
9.
10.
11. </s:form>
12.
13. </body>
14. </html>
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:
Struts.xml
29
Hola.java
30
Cdigo 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" />
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
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
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
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
39
40
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