En este tutorial vamos a desarrollar una aplicacion web con Spring MVC aplicando el patron Modelo Vista Controlador.

Entorno
El tutorial se desarrollo con las siguientes herramientas

  • Sistema Operativo: Ubuntu Nautilus 2.32.2.1
  • Spring MVC
  • Maven
  • Eclipse Helios EE
  • Servidor Jetty (Embebido en Maven)

  1. Creamos un proyecto Maven de tipo maven-archetype-webapp.

  2. Editamos el archivo pom.xml y agregamos las dependencias de Spring Framework.
  3. Al final del archivo hemos agregado el plugin org.mortbay.jetty para que maven haga deploy de nuestra aplicacion en un servidor Jetty.

  4. Modificamos el archivo web.xml que se encuentra en el directorio /WEB-INF para que nuestro proyecto funcione con Spring MVC. Declaramos un servlet llamado dispatcher que extiende de una clase de Spring MVC. El servlet se activara cuando las paginas acaben con la extension .htm
  5. En el paso anterior se definio el servlet de spring con el nombre de "dispatcher", entonces se debe crear el archivo dispatcher-servlet.xml dentro del directorio /WEB-INF. en este archivo es donde vamos a declarar los beans, la navegacion, la asociacion entre vistas y controladores.
  6. En el dispatcher-servlet.xml se definio que las vistas estaran en el directorio /WEB-INF/jsp, entonces se debe crear esta carpeta y en ella crear las vistas que tendra nuestro proyecto. En este caso dos: jspWelcome.jsp y jspSucess.jsp.


  7. jspWelcome.jsp

    jspSucess.jsp
  8. Creamos la clase User.java en el paquete com.javadeleon.springmvc.domains que servira para el modelo del proyecto
  9. Despues de haber realizado la configuracion de Spring y de haberse creado las vistas que se mostrarn vamos a crear el controlador y el modelo que tendra nuestra aplicacion. Para ello dentro del paquete com.javadeleon.springmvc.controller se ha creado un archivo java que se comportara como un controlador. Se debe anteponer la anotacion @Controller




  10. Hemos utilizado la anotacion @RequestMapping para indicarle a Spring que cada vez que se acceda a la pagina /javadeleon.htm se debe activar este controlador. @RequestMapping(method = RequestMethod.GET) se activa cuando hacemos llamados a URL utilizando el metodo GET. Este metodo agrega al modelo un mensaje y la estructura de la clase User para finalmente retornarnos la vista jspWelcome. 

    Se debe tener en cuenta que al agregar el modelo a una vista esta debe recibirlo. En el archivo jspWelcome se define el modelo: msg que contiene el mensaje que retorna el controlador la vista. A su vez se le agrega el modelo user y se hace referencia en el jsp. Igualmente se define el metodo sendUser con la anotacion @RequestMapping(method = RequestMethod.POST) utilizando el metodo POST. En este metodo se define como parametro la anotacion @ModelAttribute("user") quien recibira el usuario que se envia desde el formulario y se guarda en el objeto user de tipo User, luego agregamos el nombre del User consultando el getSbName para mostrarlo en la vista jspSucess.

  11. Modificamos el archivo index.jsp para que nos redireccione hacia la pagina javadeleon.htm




  12. Para ejecutar el proyecto hacemos click derecho sobre el proyecto Maven Build... --> en Goal definimos que se inicie la aplicacion con el servidor Jetty introduciendo: jetty:run --> Click en run. Maven descargara las dependencias del servidor jetty. Al finalizar la descarga pueden ejecutar el proyecto desde: http://localhost:8080/SpringMvc-webapp/

    Espero que les sea de gran ayuda.
Maven es una herramienta de software para la gestión y construcción de proyectos en Java. Maven tiene un modelo de configuración de construcción simple, basado en un formato XML. Maven utiliza un Project Object Model (archivo POM) para describir el proyecto de software a construir, sus dependencias (librerias) de otros módulos y componentes externos, y el orden de construcción de los elementos.

Maven permite descargar plugins de un repositorio, el mismo repositorio que provee acceso a muchas versiones de diferentes proyectos Open Source en Java, de Apache y otras organizaciones y desarrolladores. Maven provee soporte no sólo para obtener archivos de su repositorio, sino también para subir artefactos al repositorio al final de la construcción de la aplicación, dejándola al acceso de todos los usuarios.

Este plugin nos facilita el trabajo en la programación, porque nos maneja las dependencias y nuestro proyecto queda mucho mas liviano.
Spring Framework es un marco de aplicaciones Java que nos facilita enormemente la implementación de distintos patrones de diseño y la integración con una gran cantidad de tecnologías. Este framework ha venido a revolucionar la manera de programar aplicaciones Java debido a la facilidad de crear componentes reutilizables.
Spring Framework es bastante grande y por ello esta divido en varios módulos, por lo que no es obligacion usarlos todos a la vez.

Arquitectura de Spring Framework
Spring Dao: Accesos JDBC con manejo de transacciones.
Spring ORM: Integración con motores de persistencia: Hibernate, JDO, JPA e iBatis SQL.
Spring Web: Acceso e interacción con servicios enterprise.
Spring Web MVC: provee un contexto apropiado para el desarrollo de aplicaciones web e integración con otros framework (Struts, JSF, etc).