Вы находитесь на странице: 1из 63

Patrn MVC con

STRUTS
Agenda
Introduccin
Conceptos fundamentales
Apache Struts Framework
Caractersticas
Controlador
Vista
Modelo
Utilizacin
Apache Struts Project


Introduccin ()
Las aplicaciones Web son diferentes a los sitios
Web convencionales porque stas son capaces
de crear una respuesta dinmica.
Muchos sitios Web ofrecen slo pginas
estticas, en cambio una aplicacin Web es
capaz de interactuar con bases de datos y
lgica de negocios con la finalidad de
personalizar la respuesta a enviar.
Introduccin ()
Ventajas de los servlet frente a los CGI:

Ms rpidos
Ms potentes
Portables
Extensibles

Desventajas
Escribir lneas infinitas println() para enviar cdigo HTML al
navegador

Solucin
JavaServerPage
Introduccin ()
JSP permite escritura de cdigo Java
dentro de ellos consiguiendo todas las
ventajas tanto de los servlets como del
cdigo HTML
Sigue habiendo problemas propios de las
aplicaciones web: El control de flujo

Introduccin ()
Las aplicaciones Web en general tienen tres
aspectos a considerar en su desarrollo:
El cdigo de acceso, insercin, consulta,
actualizacin y/o eliminacin de los datos.
El cdigo del diseo de las pginas a mostrar.
El cdigo que controla el flujo de las pginas de la
aplicacin.
Con la prctica nos damos cuenta que si una
aplicacin Web grande tiene estos aspectos
muy mezclados se vuelve difcil de mantener.
Introduccin ()
Una forma de separar estos aspectos es usando
la arquitectura MVC: Modelo-Vista-Controlador,
donde:
El modelo representa a la lgica de negocios
(manipulacin de datos).
La vista representa la presentacin de los datos
(diseo de pginas).
El controlador representa el cdigo de navegacin
de la aplicacin (control de flujo).
Patrones de Diseo
Los patrones de diseo son soluciones
efectivas de problemas comunes en el diseo
de software.
La efectividad de un patrn ya ha sido
comprobada.
Un patrn es reusable.
Los patrones facilitan el aprendizaje de los
programadores inexpertos.
Patrones de Diseo ()
Los patrones de diseo se pueden clasificar,
segn su propsito, en:
Patrones creacionales: abstraen el proceso de
instanciacin y ocultan los detalles de cmo los
objetos son creados o inicializados.
Patrones estructurales: describen como las clases
y objetos pueden ser combinados para formar
grandes estructuras y proporcionar nuevas
funcionalidades.
Patrones de Diseo ()
Patrones de comportamiento: tratan de
cmo definir la comunicacin e interaccin
entre los objetos de un sistema con la
finalidad de reducir el acoplamiento entre
stos.

Patrn MVC
El patrn de diseo Modelo-Vista-
Controlador fue aportado originariamente por
el lenguaje de programacin SmallTalk.
Consiste en dividir una aplicacin en tres
componentes: Modelo, Vista y Controlador.
Se basa en la separacin de
responsabilidades ya que cada una de las
partes se encarga de un aspecto especfico
y no interfiere con el de las otras.
Patrn MVC: Modelo
Representa las capas de lgica de negocios y
persistencia de datos de la aplicacin.
Est formada por todos los objetos de negocio
que soportan los procesos propios del dominio
de la aplicacin.
Se encarga del acceso a los datos para
realizar consultas, eliminaciones, inserciones,
actualizaciones y almacenarlos en un medio
persistente, como por ejemplo una base de
datos, un archivo de texto, XML, etc.
Patrn MVC: Vista
Representa la capa de presentacin de los
datos.
Se encarga de mostrar la informacin al usuario,
por lo tanto tiene que ver con el diseo y
formateo de los datos para su presentacin.
Interfaz de usuario para la interaccin con la
aplicacin.
En la vista solo se deben de realizar
operaciones simples, como condiciones,
ciclos, etc.
Patrn MVC: Controlador
Se encarga de controlar el flujo de la
aplicacin.
Tiene la funcin de recibir y responder a
los eventos (acciones del usuario),
convirtiendo stos en solicitudes de servicio.
Adems, tiene que redirigir o asignar la parte
de lgica de negocios a cada peticin.
Cuenta con un mecanismo para guardar las
correspondencias entre peticiones y
respuestas que se les asignan.
Cada accin del usuario causa que se inicie
de nuevo un nuevo ciclo.
Patrn MVC: Funcionamiento (1)
El procesamiento de los
datos se lleva a cabo entre
sus tres componentes.
El controlador recibe una
peticin y decide quien la
lleva a cabo en el modelo.
Una vez terminadas las
operaciones en el modelo,
se transfiere el flujo al
controlador, que devuelve
los resultados a una vista
asignada.
Patrn MVC: Funcionamiento (2)

Patrn MVC: Funcionamiento (3)
El controlador tiene almacenado la
relacin entre las posibles peticiones y la
lgica de negocio que les corresponden.
Patrn MVC: Ventajas
Separacin total entre las capas de
presentacin, lgica de negocio y acceso a
datos.
Esta separacin es fundamental para el
desarrollo de aplicaciones consistentes,
reutilizables y ms fcilmente
mantenibles, resultando en un ahorro de
tiempo.
En Java se puede implementar el patrn
MVC con la clase Observer pero de una
manera sencilla, sin embargo con Struts se
aplica en toda una aplicacin Web
convencional.
Frameworks
Un framework es la extensin de un lenguaje,
a travs de una o ms jerarquas de clases que
implementan una funcionalidad y que pueden
ser extendidas de manera opcional.
Apache Struts Framework
Un poco de historia
Originalmente fue creado por Craig R.
McClanahan y donado al proyecto Jakarta de
Apache Software Foundation en el ao 2000.
En Junio de 2001 se libera la primera versin, y
desde entonces muchos desarrolladores han
participado en la mejora continua de este
framework.
Actualmente se ha lanzado una nueva versin
de este framework, la cual se denomina Struts
2.
Apache Struts Framework ()
Es un framework de cdigo abierto para
desarrollar aplicaciones Web J2EE usando el
patrn de diseo Modelo-Vista-Controlador.
Usa y extiende la Java Servlet API para motivar
a los desarrolladores a adoptar la arquitectura
MVC.
Simplifica notablemente la implementacin
de una aplicacin siguiendo la arquitectura del
patrn MVC.
Apache Struts Framework ()
El controlador ya se encuentra implementado en
Struts, sin embargo y si es necesario es posible
extenderlo o modificarlo.
El flujo de la aplicacin se controla desde un
archivo XML (struts-config.xml).
Proporciona la integracin con el modelo, la
lgica de negocio se implementa basndose en
clases predefinidas por el framework y
siguiendo el patrn Facade.
Apache Struts Framework ()
Facilita y soporta la construccin de la interfaz
de la aplicacin utilizando un conjunto de tags
predefinidos.
Lo que se busca es evitar el uso de scriptles,
que son trozos de cdigo Java entre <% y
%>; para ganar mantenibilidad y
rendimiento.
Permite el desarrollo de sus componentes en
paralelo o por personal especializado.
Apache Struts Framework ()
El framework provee tres componentes:
Un manejador de peticin proporcionado por el
desarrollador de la aplicacin, que se usa para
relacionarlo a una determinada URI.
Un manejador de respuesta que se utiliza para
transferir el control a otro recurso que se encargar
de completar la respuesta.
Una biblioteca de tags que ayuda a los
desarrolladores a crear aplicaciones interactivas
basadas en formularios.
Apache Struts Framework ()
Struts provee la infraestructura bsica para la
implementacin del patrn MVC, permitiendo
as que los desarrolladores puedan
concentrarse en la lgica de negocios.
El framework est compuesto por
aproximadamente 300 clases e interfaces que
estn organizadas en alrededor de 12 paquetes
de nivel superior.
Struts: Funcionamiento
El navegador genera una solicitud que es
atendida por el Controlador (un Servlet
especializado).
El Controlador tambin se encarga de analizar
la solicitud, seguir la configuracin que se le ha
programado en su XML y llamar al Action
correspondiente pasndole los parmetros
enviados.
El Action instanciar y/o utilizar los objetos de
negocio para concretar la tarea.

Struts: Funcionamiento ()
Segn el resultado que retorne el Action, el
Controlador derivar la generacin de interfaz a
una o ms JSPs, las cuales podrn consultar
los objetos del Modelo para mostrar
informacin de los mismos.
Struts: Funcionamiento ()
Struts: Controlador
La clase ActionServlet es el corazn del
framework ya que es el controlador y se
configura como servlet en el archivo
web.xml
Struts: Controlador ()
Cada vez que un usuario hace una peticin
es manejada por Struts Action Servlet.
Cuando el ActionServlet recibe la peticin
intercepta la URL y basado en el archivo de
configuracin struts-config.xml, dirige la
peticin al Action Class correspondiente.
El Action Class es parte del controlador y se
encarga de comunicarse con el modelo.

Struts: Controlador ()
Todas las peticiones atendidas por el
framework siguen un patrn en su
nomenclatura, por defecto *.do, pero ste se
puede cambiar en el archivo web.xml.

Struts: struts-config.xml
Es el archivo de configuracin de Struts, aqu
se mapean las acciones (peticiones).
Seccin <form-beans> contiene las definiciones
de beans.
Se usa un elemento <form-bean> por cada
bean de formulario, tiene los siguientes
atributos importantes:
Name: Identificador nico para referenciarlo en los
mapeos de acciones.
Struts: struts-config.xml ()
Type: ruta completa de la clase Java del bean de
formulario.
Seccin <action-mappings> contiene las
definiciones de acciones, se usa un elemento
<action> por cada accin, se definen los
siguientes atributos:
Path: nombre de la clase action en relacin al
contexto de la aplicacin.
Type: ruta completa de la clase Java de la clase
Action.
Struts: struts-config.xml ()
Name: El nombre del <form-bean> para usar con
esta action, si corresponde.
Forward: ruta del archivo JSP a llamar.
Dentro de cada <action> se pueden definir ms
de un forward, teniendo las siguientes
propiedades:
Name: nombre del forward que ser utilizado al
llamarlo desde la clase Action.
Path: ruta de la pgina JSP.
Struts: Action Class
Una clase Action de una aplicacin Struts
extiende a la clase
org.apache.struts.action.Action.
Una clase Action acta como un envoltorio
para la lgica de negocio y provee una
interfaz al modelo.
Es el mediador entre la vista y el Modelo, ya
que transmite los datos desde la Vista hacia
el proceso especfico del modelo y retorna
los resultados en sentido contrario.
Struts: Action Class ()
Una accin funciona como un adaptador
entre una peticin HTTP entrante y la lgica
de negocio creando una instancia de la
Action correspondiente y ejecutando el
mtodo execute().
Por lo tanto es necesario que la subclase
sobreescriba el mtodo execute().
No se debe aadir lgica de negocio en ella,
mejor utilizar otra capa DAO.
Struts: Action Class ()
Mtodo execute():

public ActionForward execute(
ActionMapping mapping,
ActionForm form,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response
) throws java.lang.Exception
Struts: Action Class ()
Sus parmetros son:
mapping - El ActionMapping usado para
seleccionar esta instancia
form - ActionForm bean para esta peticin, si existe
request - La peticin HTTP que se est procesando
response - La respuesta HTTP que se est
creando.
Lanza una excepcin si en la lgica de
negocio ocurre tambin una excepcin.
Struts: Action Form
Una de las tareas que consume mucho trabajo
es la interaccin con formularios, ya sea para
editar u obtener nueva informacin.
Las comprobaciones, la gestin de errores, el
volver a presentar el mismo form al usuario con
los valores que puso y los mensajes de error
estn soportados por Struts con los Action
Forms y JSP.
Struts: Action Form ()
Un ActionForm es un JavaBean que se
extiende org.apache.struts.action.ActionForm.
Implementa los mtodos get y set para cada
input de un formulario de una pgina, y los
mtodos validate y reset.
Se llena automticamente en el lado del
servidor con los datos introducidos desde un
formulario en el lado del cliente.
Struts: Modelo
Comprende toda la lgica del negocio, son las
clases Java que el desarrollador tiene que
implementar.
No existe un formato definido para la creacin
de estos componentes, el framework
proporciona interfaces a bases de datos, etc.
Se elige el modelo de acuerdo con los
requerimientos del cliente.
Struts: Vista
Los componentes de la Vista son JSP y se
encargan de la presentacin de la informacin al
usuario y del ingreso de sus datos.
Muestran los datos proporcionados por los
componentes del modelo.
Struts provee soporte para construir fcilmente
la interfaz de usuario a travs de la utilizacin
de HTML Tag Library.
Struts: Vista ()
Pudiendo obtener aplicaciones multi-
idioma, interaccin con formularios y otras
utilidades.
Para usar los Struts HTML Tags es
necesario incluir la siguiente lnea en el
JSP:
<%@ taglib uri="http://struts.apache.org/tags-
html" prefix="html" %>
Struts: Tag Library
<html:html> Genera el tag <html>.
<html:form> Genera <form>
<html:button> Genera el tag <input type="button">.
<html:submit> Genera <input type="submit"> para
enviar los datos ingresados.
<html:reset> Genera <input type="reset">
<html:checkbox> Genera el tag <input
type="checkbox">
<html:hidden> Genera el tag <input type="hidden">.
<html:img> Genera el tag <img>
Struts: Tag Library ()
<html:link> Genera un link html
<html:password /> Genera el tag <input
type=password>.
<html:radio> Genera un radio button (<input
type="radio">).
<html:select multiple="true" property="selectBox">
Genera la lista en el formulario, selectBox debe ser un
array. Usar <html:options> para especificar las entradas.
<html:text> Genera el tag <input type="text">

Struts: Tag Library ()
<html:textarea> Genera el tag <textarea>.
<html:file /> Genera el tag <input type=file> para subir
archivos.
<html:base> Genera el tag <base>. Este tag debe ser
usado dentro del tag <head>
<html:errors> Genera el codigo html para mostrar los
errors que pueden ocurrir en la pgina.
<html:message key="thekey"/> Busca el valor
correspondiente al key dado en el archivos de recursos
y lo muestra.
Struts: Internacionalizacin
Struts provee la facilidad de crear
aplicaciones multilenguaje.
Para crear una aplicacin multilenguaje se
debe crear un archivo de texto (ej:
ApplicationResources.properties) en el
directorio donde se encuentren las clases de
la aplicacin(ej. empresa/aplicacion) que
contenga las claves y valores con el formato
clave.subclave=texto de los textos que
pertenezcan al idioma principal.
Struts: Internacionalizacin
()
Ejemplo:
login.titulo = Ingreso al Sistema
login.labelusuario = Usuario :
login.labelpassword= Password :
Para cada idioma alternativo se crear un
archivo nuevo que se llame igual pero que
termine en "_xx.properties" siendo xx el cdigo
ISO de idioma (ej:
ApplicationResources_en.properties).
Struts: Internacionalizacin
()
En struts-config.xml se debe configurar el Tag
/servlet/init-param/param-name application y
ponerle como param-value la localizacin del
archivo con el idioma principal.

Struts: Internacionalizacin
()
Ejemplo:
<servlet>
<servlet-name>action</servlet-name> ...
<init-param>
<param-name>application</param-name>
<param-value>
empresa.aplicacion.ApplicationResources
</param-value>
</init-param>

Struts: Internacionalizacin
()
Por ultimo se utiliza el Tag <bean:message
key="clave.subclave"/> donde clave y subclave
corresponden al texto por el que se
reemplazar segn el idioma del usuario.
Ejemplo:
<H1>
<bean:message key="login.titulo"/>
</H1>
Struts: Utilizacin I
En el struts-config.xml
<action path="/Welcome"
forward="/pages/Welcome.jsp"/>
En el JSP inicial
<html:link page="/Welcome.do">Primera peticion al
controlador</html:link>
En Welcome.jsp
Struts: Utilizacin I ()
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<html:html locale="true">
<head>
<title><bean:message key="welcome.title"/></title>
<html:base/>
</head>
<body bgcolor="white">
<h3><bean:message key="welcome.heading"/></h3>
<p><bean:message key="welcome.message"/></p>
</body>
</html:html>
Struts: Utilizacin II
En el struts-config.xml
<action path="/TestAction" type=
aplicacion.TestAction >
<forward name="testAction" path=
"/pages/TestAction.jsp"/>
</action>
En el JSP inicial
<html:link page="/TestAction.do">Test the
Action</html:link>
Struts: Utilizacin II ()
TestAction .java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class TestAction extends Action{
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
return mapping.findForward("testAction"); } }
Struts: Utilizacin II ()
En TestAction.jsp
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<html:html locale="true">
<head>
<title><bean:message key=test.title"/></title>
</head>
<body bgcolor="white">
<h3><bean:message key=test.mensaje"/></h3>
</body>
</html:html>
Apache Struts Project
La organizacin principal, a la cual
pertenece este proyecto es la Apache
Software Foundation.
Apache Struts Project es la comunidad de
desarrollo de cdigo abierto que se encarga
de crear y mantener el Apache Struts
Framework.
Est formado por un grupo diverso de
voluntarios con sentido de colaboracin.
Apache Struts Project ()
El proyecto es llamado "Struts porque la
finalidad del framework es proporcionar algo
como "bases invisibles" que soporten el
desarrollo de aplicaciones profesionales.
Struts nos proporciona el pegamento que une
diversos elementos de la plataforma Java en un
todo coherente.
Apache Struts Project ()
El objetivo del proyecto es aprovechar los
estndares existentes mediante la produccin
de las piezas que faltan para ser capaces de
crear aplicaciones de categora empresarial
que sean fciles de mantener en el tiempo.
Ofrece dos versiones principales del framework
Struts.
Apache Struts Project ()
Struts 1 es reconocido como el framework ms
popular para aplicaciones Web en Java.
Este framework, en su versin 1.x, es maduro,
est bien documentado, y cuenta con un amplio
soporte.
Es la mejor alternativa para afrontar problemas
comunes de desarrollo.
Apache Struts Project ()
Struts 2 fue originalmente conocido como
WebWork 2; despus de trabajar
independientemente por varios aos, las
comunidades de Struts y WebWork unieron
fuerzas para crear Struts 2.
El framework 2.x es la mejor opcin para
afrontar elegantemente los problemas difciles
del desarrollo.
Apache Struts Project ()
Struts 2 es un elegante y extensible framework
para la creacin de la empresa de aplicaciones
web en Java.
El framework est diseado para apoyar el ciclo
completo de desarrollo, desde la construccin,
el despliegue y a lo largo del periodo de
mantenimiento de las aplicaciones.
Links de inters
http://struts.apache.org/
http://struts.apache.org/2.x/
http://struts.apache.org/1.x/
http://www.roseindia.net/struts/

Вам также может понравиться