Java ΙΙ - Introducción a Struts

nutmegactSoftware and s/w Development

Nov 10, 2012 (5 years and 1 month ago)

471 views

Copyright


Altran SDB, 2001. All rights reserved.

1



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Clase 8:

Introducción a
Struts

ACI


843

JAVA II

Copyright


Altran SDB, 2001. All rights reserved.

2



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Objetivos


Entender el Patrón de Diseño Modelo


Visualización


Controlador (Model
-
View
-
Controller MVC)


Conocer la funcionalidad y organización

del framework


Simplificar el “first touch”


Saber cómo hacerlo funcionar

Copyright


Altran SDB, 2001. All rights reserved.

3



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Contenidos


El Patrón MVC


Arquitectura de Struts


Model


View


Controller


Referencias


Conclusiones

Copyright


Altran SDB, 2001. All rights reserved.

4



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

¿Qué es Struts?


Struts

es una herramienta de soporte para el desarrollo de
aplicaciones Web

bajo el
patrón

MVC

bajo la plataforma
J2EE

(Java 2, Enterprise Edition).


Se desarrollaba como parte del proyecto
Jakarta

de la
Apache Software Foundation
, pero actualmente es un
proyecto independiente conocido como
Apache Struts
.


Struts permite reducir el tiempo de desarrollo.


Su carácter de "
software libre
" y su compatibilidad con
todas las plataformas en que Java Entreprise esté
disponible, lo convierte en una herramienta altamente
disponible.

Copyright


Altran SDB, 2001. All rights reserved.

5



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

¿En qué consiste?


Es un
framework

de la capa de presentación que
implementa el patrón MVC en Java:








Un framework es la extensión de un lenguaje mediante
una jerarquía de clases que implementan una
funcionalidad y que (opcionalmente) pueden ser
extendidas.

MVC 2

Copyright


Altran SDB, 2001. All rights reserved.

6



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Funcionamiento


Struts implementa el
patrón

del
Modelo Vista Controlador
(MVC)

el cual se utiliza ampliamente y es considerado de
gran solidez.


De acuerdo con este modelo, el procesamiento se separa
en tres secciones diferenciadas, llamadas el modelo, las
vistas y el controlador:

MVC

Copyright


Altran SDB, 2001. All rights reserved.

7



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Funcionamiento (2)


Cuando se programan aplicaciones Web con el
patrón MVC, siempre surge la duda de usar un
solo controlador o usar varios controladores, pues
si se considera mejor usar un solo controlador para
tener toda la lógica en un mismo lugar, surge un
grave problema: dicho controlador se convierte en
lo que se conoce como "fat controller", es decir un
controlador saturado de peticiones.


Struts surge como la solución a este problema,
pues implementa un único controlador
(ActionServlet) que evalúa las peticiones del
usuario mediante un archivo configurable (struts
-
config.xml).

Copyright


Altran SDB, 2001. All rights reserved.

8



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

¿Cómo trabaja?

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=strutsb


Copyright


Altran SDB, 2001. All rights reserved.

9



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Patrón MVC


Copyright


Altran SDB, 2001. All rights reserved.

10



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Patrón MVC (2)

Copyright


Altran SDB, 2001. All rights reserved.

11



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Arquitectura funcional básica

Navegador

1. Solicitud

2. Acciones

3. Resultados

4. Redireccionamiento

6. Resultado

5. Consulta



Controller

(Servlet)


Model

(JavaBeans

y/o EJBs)

View

(JSPs, TagLibs)

Copyright


Altran SDB, 2001. All rights reserved.

12



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Navegador

1. Solicitud

4. Perform

6. Resultado

7. Redireccionamiento

9. Resultado

8. Consulta


Objetos

de Negocio

JavaBeans

View

(JSPs, TagLibs)


config

XML

Action

5. Acciones

Model

2. Sets y Validate

3. Resultado


Controller

(Servlet)


Action

Form

Arquitectura funcional básica (2)

Copyright


Altran SDB, 2001. All rights reserved.

13



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Clases que proporciona

Copyright


Altran SDB, 2001. All rights reserved.

14



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Modelo


Model = ActionForms + Actions + Objetos de Negocio



ActionForms: Validador de formularios



Actions: Ejecutor de acciones sobre los Objetos de
Negocio: Patrón de diseño Fachada (Facade)



Objetos de Negocio: Entidades que representan los
conceptos del negocio, sus características y
comportamiento


Copyright


Altran SDB, 2001. All rights reserved.

15



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Son JavaBeans con las siguientes características:


Extienden
org.apache.struts.action.ActionForm


Implementan
set

y
get

para cada input del
formulario


Definen un método
validate

que retorna una lista
de errores


Opcional: método
reset

para reinicializarse

Modelo (2): ActionForms

Copyright


Altran SDB, 2001. All rights reserved.

16



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Ejemplo de ActionForms

public final class ClienteForm


extends ActionForm {


private String nombre = null;


ActionErrors errors = null;


Cliente cliente = null;


...


public ClienteForm() {


...


// Crear u obtener el objeto...


cliente = new Cliente();


errors = new ActionErrors;


...


}


public String getNombre() {


return (this.nombre);


}


public void setNombre(String nombre) {


try {


cliente.setNombre(nombre);

} catch (Exception e) {


errors.add("nombre",


new ActionError("error.nombre"));


}


this.nombre = nombre;


}


public void reset(


ActionMapping mapping,


HttpServletRequest request) {


this.nombre = null;


}


public ActionErrors validate(


ActionMapping mapping,


HttpServletRequest request) {


...


return errors;


}

}

Copyright


Altran SDB, 2001. All rights reserved.

17



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Modelo (3)

ActionForms


No debe tener nada que corresponda a la
lógica de negocio.


Debe ser un Firewall entre el usuario y el
Action que detenga todo tipo de errores de
incompletitud o inconsistencia.


Si el formulario se desarrolla en varias páginas
(interfaces Wizard) el ActionForm y el Action
deberán ser los mismos.


Se debe declarar en struts
-
config.xml

Copyright


Altran SDB, 2001. All rights reserved.

18



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Modelo (4) Action


Son clases que extienden
org.apache.struts.action.ActionForm


Implementan el método
perform(ActionMapping,
ActionForm, HttpServletRequest,
HttpServletResponse)
que retorna un
ActionForward




ActionMapping

indica los posibles valores de retorno
del
ActionForward

según el struts
-
config.xml



ActionForm

es el ActionForm que procesó el formulario
(es nulo si no se ha definido un ActionForm en el struts
-
config.xml)

Copyright


Altran SDB, 2001. All rights reserved.

19



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Relación comando
-

modelo


Diagrama en UML que muestra la relación del Comando
(ActionServlet) al Modelo (Action)

Copyright


Altran SDB, 2001. All rights reserved.

20



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Copyright


Altran SDB, 2001. All rights reserved.

21



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Vistas


La Vista de una aplicación Struts generalmente
está construida usando tecnología Java Server
Pages (JSP).


Las páginas JSP pueden contener texto HTML
estático y contenido dinámico basado en la
interpretación de etiquetas de acción
especiales


El entorno JSP incluye un conjunto de
etiquetas estándar y posibilita construir nuestra
propia librería de etiquetas

Copyright


Altran SDB, 2001. All rights reserved.

22



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Vistas (2)


Struts incluye una extensa librería de etiquetas
personalizadas que facilitan la creación de
interfaces de usuario (User Interface
-

UI)
completamente internacionalizadas.


Estas interfaces interactúan amigablemente con
los beans ActionForm que son parte del Modelo
del sistema.

Copyright


Altran SDB, 2001. All rights reserved.

23



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Vistas (3): Algunas etiquetas

Copyright


Altran SDB, 2001. All rights reserved.

24



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Internacionalización


Struts provee la facilidad de crear aplicaciones
multilenguaje.


Para lograrlo, debe crearse un archivo llamado
ApplicationResources.properties

login.titulo=UDLA
-

ACI 843 JAVA II NetBeans

login.labelusuario=Usuario :

login.labelpassword=Password :


Para cada idioma alternativo se creará un archivo nuevo
terminado en "_xx.properties“


Después debe configurarse el lenguaje a utilizar en el
archivo struts
-
config.xml.
<message
-
resources
parameter="login.resources.ApplicationResources"/>

Copyright


Altran SDB, 2001. All rights reserved.

25



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Internacionalización (2)


Se debe configurar el Tag /servlet/init param/paramname
application y ponerle como param
-
value la localización del
archivo con el idioma principal:

<servlet>

<servlet
-
name>action</servlet
-
name>

...

<init
-
param>

<param
-
name>application</param
-
name>

<param
-
value>com.java2.clases.ApplicationResources</param
-
value>

</init
-
param>




Por último, En las paginas JSP se utiliza el Tag
<bean:message key="clave.subclave"/>


donde clave y subclave corresponden al texto por el que
se reemplazará según el idioma del usuario. Ejemplo:

<bean:message key="login.titulo"/>

Copyright


Altran SDB, 2001. All rights reserved.

26



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Controlador


Recibe las solicitudes del cliente.


Decide qué función de la lógica de negocio se va a
realizar (Action).


Delega la responsabilidad para producir la
siguiente fase del interfase de usuario en un
componente Vista apropiado.


Copyright


Altran SDB, 2001. All rights reserved.

27



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Clases Action


Son clases que extienden
org.apache.struts.action.Action


El objetivo de una clase Action es procesar una
solicitud, mediante su método execute(), y
devolver un objeto ActionForward que identifica
dónde se debería reenviar el control (por ejemplo a
una JSP) para proporcionar la respuesta
apropiada.


ActionMapping indica los posibles valores de
retorno del ActionForward según el struts
-
config.
xml

Copyright


Altran SDB, 2001. All rights reserved.

28



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Copyright


Altran SDB, 2001. All rights reserved.

29



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

El archivo struts
-
config.xml

Es el archivo que le define a Struts el workflow de la aplicación.

Posee dos elementos importantes:

1.

<form
-
beans>


Sección que contiene nuestras definiciones de beans de formulario.
Posee dos atributos:



name
: Es un identificador único para este bean, que será usado para
referenciarlo en los correspondientes action Mappings.



type
: El nombre de la clase Java de nuestro bean de formulario

2.
<action
-
mappings>


Esta sección contiene nuestras definiciones de acciones. Posee tres
atributos importantes:



name
: Es un identificador único para este bean de formulario para usar con
esta acción.



type
: El nombre de la clase Java de nuestra Acción



path
: El path a la clase Action en relación al contexto de la aplicación.

Copyright


Altran SDB, 2001. All rights reserved.

30



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Ejemplo


Si se desea crear la aplicación Struts más simple
posible, por ejemplo una página con un saludo,
deberá hacerse lo siguiente:

1.
Una página JSP (la presentación)

2.
Una clase Action (componente del controlador)

3.
La clase Action debe definirse en el struts
-
config.xml correctamente


Copyright


Altran SDB, 2001. All rights reserved.

31



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Diagrama de clases

Como puede verse, solamente tendríamos dos archivos:



una clase que hereda de struts.Action y



una JSP con la presentación.


La clase Action se configura en el struts
-
config.xml y se
convierte en parte del controlador.

Copyright


Altran SDB, 2001. All rights reserved.

32



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Diagrama de colaboración


Cuando la aplicación recibe una petición, Struts decidirá
que debe cargar esa clase y través de ella cargará la
JSP. Así se puede ver en el siguiente diagrama:

Una petición llega a Struts (una URL).

Struts mira en su “mapa” (el fichero struts
-
config.xml), y
deduce que tiene que cargar la ClaseAction.

Esta clase está configurada para que cargue una pagina JSP.

Como se puede observar,no se carga la JSP directamente,
hay que pasar por el controlador.

Copyright


Altran SDB, 2001. All rights reserved.

33



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Diagrama de secuencia


Pasos seguidos por la aplicación en el plano
temporal.


Por lo general, en cualquier aplicación Web
siempre se sigue un mismo esquema:

1.
Se muestra un formulario

2.
Se rellena

3.
Se valida

4.
Se manda a una página que realiza la lógica de
negocio

5.
Se muestra el resultado.


Obviamente, este no es el ejemplo más clásico
de una acción de Struts.

Copyright


Altran SDB, 2001. All rights reserved.

34



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

En Struts se necesitaría:

1.
Una clase Action (su nombre podría empezar por
Edit
) encargada de cargar el
formulario.

2.
Un Bean tipo Form cuyos campos u atributos de instancia coinciden con los
campos del formulario. (al ser tipo JavaBean tendrá los correspondientes
métodos set y get para los atributos) . Este form y sus atributos son un
requisito imprescindible.

3.
Una JSP que contiene el formulario citado. Los campos deben coincidir con los
definidos en el Bean de formulario

4.
Una clase Action (su nombre podría empezar por
Save
) encargada de pasar la
instancia del formulario al Bean de Logica de Negocio, esperar su resultado y
redirigir el flujo a una JSP de error o de éxito.

5.
Un Bean de lógica de negocio (El que hace algo con los datos del formulario)

6.
Una JSP para mostrar un mensaje en caso de éxito (o puede ser la misma del
principio)

7.
Una JSP para mostrar los errores en caso de error (o puede usarse una
genérica).



Struts permite cierta flexibilidad en cuanto a nombres, pero
conviene
especificar
cual es Action, cual es Form, cual es Bean de negocio, etc.. así
como meterlos en subpaquetes con ese nombre.

Diagrama de secuencia (2)

Copyright


Altran SDB, 2001. All rights reserved.

35



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Diagrama de clases (2)

Este sería el conjunto de clases utilizadas y sus relaciones:

La clase edit también podría usar el formulario, aunque en principio, no
tiene porqué.

Copyright


Altran SDB, 2001. All rights reserved.

36



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Diagrama de colaboración (2)

Copyright


Altran SDB, 2001. All rights reserved.

37



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Conclusiones


Struts suministra un framework para implementar
un diseño MVC en poco tiempo.


Puede emplearse en cualquier aplicación Web
independientemente de su funcionalidad y
cuestiones de rendimiento o arquitectura.


Es el resultado del trabajo de una comunidad con
experiencias y necesidades heterogeneas que han
pensado en términos generales.


Puede extenderse aunque es recomendable seguir
su filosofía de diseño.

Copyright


Altran SDB, 2001. All rights reserved.

38



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Bibliografía


Introducción al framework Struts.PDF


STRUTS.pdf


http://www.adictosaltrabajo.com/tutoriales/tutori
ales.php?pagina=strutsb


Aplicación paso a paso con Struts


Como manejar Struts con Xdoclet


Copyright


Altran SDB, 2001. All rights reserved.

39



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Referencias en Internet


http://jakarta.apache.org/struts


http://jakarta.apache.org/struts/userGuide


http://jakarta.apache.org/struts/#Involved


http://jakarta.apache.org/struts/api


http://jguru.com/faq/Struts


http://jguru.com/forums/Struts


http://www
-
128.ibm.com/developerworks/library/j
-
struts/?dwzone=java


http://www.programacion.com/java/tutorial/struts/


http://www.programacion.com/java/tutorial/joa_struts/


http://www.monografias.com/trabajos28/struts
-
el
-
netbeans4/struts
-
el
-
netbeans4.shtml

Copyright


Altran SDB, 2001. All rights reserved.

40



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

EJEMPLO MÁS COMPLEJO DE
STRUTS

Aplicación de alta

(creación e ingreso de nuevos usuarios)

a un sistema.

Copyright


Altran SDB, 2001. All rights reserved.

41



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Funcionalidad deseada


Ahora veremos un ejemplo más acorde con la funcionalidad esperada
de una aplicación Web cualquiera.


Se trata de una aplicación de alta de usuario, un tipo de aplicación
muy común y que presenta en muchos sistemas.


Veremos como implementar esto con struts.


En cualquier otro entorno bastaría con crear un formulario y una
página que realiza el alta y da el mensaje correspondiente; pero aquí
no será tan simple.


Entrada de aplicación:


Un formulario de datos: username,


password,


edad,


fechanacimiento y


profesion


Salida de aplicación :


Una página que muestra si se ha dado de alta correctamente.

Copyright


Altran SDB, 2001. All rights reserved.

42



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Diagrama de clases

Copyright


Altran SDB, 2001. All rights reserved.

43



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Diagrama de Colaboración

Copyright


Altran SDB, 2001. All rights reserved.

44



2006Universidad de Las Américas
-

Escuela de Ingeniería
-


Seguridad Informática
-

Dr. Juan José Aranda Aboy

Pasos en NetBeans 5.0

1.
Crear proyecto Web con la opción Struts. Dejar
valores asumidos para el nombre de servlet
(action) y para el Action URL Pattern ( *.do)

2.
El proyecto genera automáticamente los
archivos:

1.
web
\
index.JSP

2.
web
\
welcomeStruts.JSP

3.
web
\
WEB
-
INF
\
struts
-
config.xml

4.
src
\
java
\
com
\
myapp
\
struts
\
ApplicationResoure.properti
es

3.
Utilizar y adaptar apropiadamente los archivos
del ejemplo en
Struts
-

Implementación del
patron MVC en Web