21. Conclusión
Recordemos lo que se ha presentado en este documento:
- los fundamentos de la programación web en Java con servlets y páginas JSP
- una introducción a la arquitectura MVC
- una introducción a la arquitectura de tres capas
- una introducción a Spring IoC
- ejemplos para ilustrar estos puntos
Creemos que el lector que ha llegado hasta aquí está listo para desarrollar por sí mismo sus propias aplicaciones web en Java. También está listo para abordar otros métodos de desarrollo similares a los estudiados en este documento. Recordemos la arquitectura de las aplicaciones web desarrolladas aquí:
![]() |
Para aplicaciones sencillas, esta arquitectura es suficiente. Cuando se han escrito varias aplicaciones de este tipo, se observa que los servlets de dos aplicaciones diferentes:
- tienen el mismo mecanismo para determinar qué método [doAction] se debe ejecutar para procesar la acción solicitada por el usuario
- en realidad solo se diferencian por el contenido de esos métodos [doAction]
Entonces, la tentación es grande de:
- factorizar el procesamiento (1) en un servlet genérico que no tenga conocimiento de la aplicación que lo utiliza
- delegar el procesamiento (2) a clases externas, ya que el servlet genérico no sabe en qué aplicación se utiliza
- establecer la conexión entre la acción solicitada por el usuario y la clase que debe procesarla mediante un archivo de configuración
Han surgido herramientas, a menudo llamadas «frameworks», para brindar estas facilidades a los desarrolladores. El más antiguo y probablemente el más conocido de ellos es Struts (http://struts.apache.org/). Jakarta Struts es un proyecto de la Apache Software Foundation (www.apache.org). Este marco de trabajo se describe en (http://tahe.developpez.com/java/struts/).
El marco Spring (http://www.springframework.org/), de aparición más reciente, ofrece funcionalidades similares a las de Struts. En realidad, se trata de su módulo Spring MVC. Su uso se ha descrito en varios artículos (http://tahe.developpez.com/java/springmvc-part1/).
Spring no se limita únicamente al concepto MVC de la capa [web] de una aplicación de tres capas. Es útil incluso en aplicaciones que no son web.
Así, hemos concluido nuestro curso implementando una arquitectura MVC en una arquitectura de tres capas [web, metier, dao], utilizando un ejemplo básico de gestión de una lista de personas.
![]() |
En la versión 1 de la aplicación, la lista de personas se mantenía en memoria y desaparecía al cerrar la aplicación web. En las demás versiones, la lista de personas se guarda en una tabla de la base de datos. Utilizamos cuatro SGBD diferentes: Firebird, Postgres, MySQL y SQL Server Express.
Gracias a Spring IoC, la capa [web] de la versión 1 se pudo conservar íntegramente en las versiones siguientes. De esta manera, demostramos que se pueden construir arquitecturas ntier con capas independientes.
Con las versiones que utilizan una base de datos, hemos demostrado la contribución de Spring a la construcción de las capas [dao] y [service]. Gracias a la integración de Spring con iBATIS, hemos podido construir cuatro versiones que solo difieren en sus archivos de configuración. Se utilizó la misma clase [DaoImplCommon] para implementar la capa [dao] en las cuatro versiones. Para resolver un problema específico de SGBD Firebird, tuvimos que derivar esta clase, pero sin modificarla.
Por último, hemos mostrado cómo Spring nos permite gestionar las transacciones de manera declarativa en la capa [service].
Se invita al lector a descubrir todas las funcionalidades que ofrece este producto.

