Aplicaciones Web Con Java - Patron MVC
Aplicaciones Web Con Java - Patron MVC
Resumen
software. El artículo no pretende ser un tutorial, sino más bien una justificación
y una guía respecto a la conveniencia de utilizar MVC en el desarrollo de
aplicaciones Web. La arquitectura del programa utilizado como ejemplo,
pretende servir de base para una aplicación web más elaborada o compleja.
Keywords: Aplicaciones Web, Java, Mejores prácticas, Modelo Vista
Acerca de los autores... Controlador MVC, Patrón de Diseño, JSP, Servlets.
*
Profesor en la División de Ingeniería en Sistemas
Computacionales, Tecnológico de Estudios Superiores
de Ecatepec
Keywords: Aplicaciones Web, Java, Mejores prácticas, Modelo Vista
** Profesor en el Departamento de Matemáticas, UNAM Controlador MVC, Patrón de Diseño, JSP, Servlets.
FES Cuautitlán
Introducción
Mientras que los servlets pueden ser utilizados para extender la funcionalidad
de cualquier servidor Java, hoy día son más utilizados para extender la
funcionalidad de los servidores Web. Cuando se utiliza un servlet para
crear contenido dinámico para una página electrónica, se está creando una
aplicación Web. Una aplicación Web ofrece una interactividad mayor que
la que ofrece una página Web estática. Una aplicación Web puede ser tan
simple como un buscador de palabras clave en un documento, o tan compleja
como una tienda en línea de comercio electrónico. Dichas aplicaciones se
construyen sobre Internet o en intranets o extranets corporativas, con el
potencial de incrementar la productividad y cambiar la forma en que las
organizaciones de todo tipo realizan actividades de negocios [2].
Tutorial [3]
La plataforma JEE utiliza un modelo de aplicación Los arquitectos de aplicaciones JEE necesitan entender
multicapa distribuida para aplicaciones empresariales. más allá de los conceptos de las API como:
La lógica de la aplicación se divide en componentes
de acuerdo con su función. Estos componentes * ¿Cuáles son las mejores prácticas?
pueden encontrarse instalados en diferentes equipos * ¿Cuáles son las malas prácticas?
dependiendo de la capa a la que pertenecen. * ¿Cuáles son los problemas más comunes y las
soluciones probadas a estos problemas?
* ¿Cómo se puede reconstruir el código desde un
escenario menos óptimo, o desde una mala práctica,
hacia una mejor forma, normalmente descrita por un
patrón de diseño?
El ciclo de vida de MVC se representa por la interacción Las desventajas del patrón MVC
de las tres capas descritas anteriormente con el cliente son:
o usuario.
* La separación en capas incorpora complejidad al
sistema.
* La cantidad de archivos a manejar y desarrollar se
incrementa considerablemente.
* La curva de aprendizaje del patrón es más alta que
usando otros modelos más simples.
Con la finalidad de implementar el patrón MVC sin AccionProxy instancia la clase concreta y ejecuta
ningún framwork externo, se utilizará la tecnología el método que encapsula la funcionalidad. Una
Java Servlets, a fin de implementar las funciones del vez ejecutada la acción, evaluará el resultado y en
controlador y la tecnología JSP para las funciones función de ello, determinará si la petición debe ser re-
de la capa de vista. Para la capa del modelo y las direccionada a otra acción o se debe generar una vista
reglas de negocio se utilizan clases que ejecutan las que será enviada de regreso al usuario.
funcionalidades del ejemplo; dichas clases en algún
momento podrían interactuar con la base de datos, Cabe mencionar que las variantes a esta arquitectura
ya sea aplicando un patrón como DAO o utilizando pueden ser muchas, sin embargo ésta es la que nos
simplemente JDBC; en el ejemplo no mostramos esta permitirá explicar la estrategia de implementación
parte y nos concretamos en explicar el funcionamiento del patrón MVC, la cual puede servir de base para la
del modelo. creación de otro tipo de aplicaciones.
Para el ejemplo de implementación del patrón MVC se La Vista del modelo MVC está compuesta por la página
utilizará la siguiente arquitectura, la cual se muestra en Web a través de la cual el usuario realizará la petición
la Figura 4, donde se aprecian los componentes que de la acción, así como la página que resultará de la
forman parte de esta aplicación de ejemplo. ejecución de la petición.
10
25
accion = parametro;
AccionProxy accProxy = AccionProxy.getInstance();
accProxy.creaAction(request, response, accion);
}
}
11
25
Las variables que utilizamos dentro del archivo de propiedades
para el ActionProxy tienen las siguientes características:
listarLibrosDeCuentoDisponibles.srcAction = com.
ro.ejercicioMVC.acciones.ListarLibrosCuento
listarLibrosDeCuentoDisponibles.true.resultType =
action
listarLibrosDeCuentoDisponibles.true.resultValue =
listarCualquierLibroDisponible
listarLibrosDeCuentoDisponibles.false.resultType =
html
listarLibrosDeCuentoDisponibles.false.resultValue =
respuestaInesperada.html
listarCualquierLibroDisponible.srcAction = com.
ro.ejercicioMVC.acciones.ListarOtrosLibros
listarCualquierLibroDisponible.true.resultType = jsp
listarCualquierLibroDisponible.true.resultValue =
respuesta.jsp
12 listarCualquierLibroDisponible.false.resultType =
html
25
listarCualquierLibroDisponible.false.resultValue =
respuestaInesperada.html
Accion accion;
accion = (Accion) Class.forName(nuevaAcc).newInstance();
accion.setActionParams(request, response);
Boolean RespAccExe = accion.executeAction();
if (RespAccExe.equals(true))
{
...
} else if (RespAccExe.equals(false)) {
...
}
} while( otraAcc.equals(true) ) ;
}
13
25
os”, informe);
}
}