Spring – MVC : Primeros pasos
Spring – MVC es uno de los módulos del Framework de Spring, y como su propio nombre nos indica implementa una arquitectura Modelo – Vista – Controlador que utilizaremos como base para desarrollar nuestra aplicación web.
Si ya has utilizado antes el Framework de Struts, que también implementa una arquitectura MVC, no tendrás muchos problemas en utilizar este módulo.
Partiendo de una aplicación web
Sabemos que necesitamos nuestras herramientas Java (JDK), un IDE (hoy por hoy Eclipse es el rey y yoxos su profeta) y un servidor de aplicaciones (Tomcat siempre es una buena elección).
Bueno, pues con todo listo partimos de una aplicación web, que llamaremos holamundo. Para comenzar nos basta un nuevo proyecto web dinámico con un fichero de bienvenida, index.jsp. Recuerda que se indica en el web.xml la lista de ficheros de bienvenida.
Desplegando la aplicación en nuestro servidor de aplicaciones deberíamos ver nuestra página de bienvenida introduciendo en nuestro navegador la URL <URL_Servidor_Aplicaciones>/holamundo (si el servidor está en nuestro ordenador, http://localhost:8080/holamundo).
Librerías Spring – MVC
Añadimos lo primero las librerías del Tomcat. Encima del proyecto, botón derecho > Propiedades > Java Build Path > en la pestaña de Librerías > Añadir Librería > Server Runtime > Seleccionamos el Servidor de Aplicaciones (Tomcat)
Ahora añadiremos las librerías que necesitamos para utilizar Spring – MVC. Las necesarias son :
- spring.jar, contiene las clases del núcleo de spring.
- spring-mvc.jar, contiene las clases del módulo de MVC de Spring.
Normalmente también añadiremos al menos
- standard.jar y jstl.jar para utilizar etiquetas JSTL en nuestro proyecto.
- commons-logging.jar (o log4j.jar) para el logging de nuestra aplicación.
- junit.jar para utilizar JUNIT para las pruebas de nuestras clases. Evidentemente si eres español esto te sobra, porque aquí programamos como los hombres, a pelo, a pecho descubierto y con las luces en el traje.
Configurando Spring – MVC
Debemos indicar ahora a nuestra aplicación web que utilice la servlet de Spring. Sip, eso lo hacemos en el web.xml. En este ejemplo definimos una servlet (holamundo) que responderá al encontrar una URL con el patrón *.lycka.
<servlet>
<servlet-name>holamundo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>holamundo</servlet-name>
<url-pattern>*.lycka</url-pattern>
</servlet-mapping>
Y Spring MVC también tiene su archivo de configuración, al estilo del struts-config.xml de Struts. En este caso el nombre es el nombre de la servlet (<servlet-name>) seguido de "-servlet.xml". En este caso, holamundo-servlet.xml.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!– the application context definition for the springapp DispatcherServlet –>
<bean name="/holamundo.html" class="es.lycka.holamundo.control.HolaMundoController"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
Hemos a definir un controlador (es.lycka.holamundo.control.HolaMundoController), que atenderá la llamada a un path ("/holamundo.lycka").
<bean name="/holamundo.lycka" class="es.lycka.holamundo.control.HolaMundoController"/>
Este controlador realizará sus operaciones pertinentes, y según su resultado decidirá el siguiente paso : devolverá como resultado una vista (una jsp) con sus parámetros correspondientes. En este caso, se dirigirá a la vista "holamundo" pasando un parámetro, "ahora".
public class HolaMundoController implements Controller {
protected final Log logger = LogFactory.getLog(getClass());
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String ahora = (new Date()).toString();
logger.info("Se dirige a la vista holamundo con ahora = " + ahora);
return new ModelAndView("holamundo", "ahora", ahora);
}
}
Ahora entra en juego el otro bean definido en nuestro xml, "viewResolver". Para independizar la ubicación de los ficheros de las vistas de los contraldores podemos definir reglas para encontrar la vista a partir de su nombre. En este caso, van a estar dentro del directorio "jsp/" y su extensión será ".jsp".
Así que nos queda construir la jsp que responderá, holamundo.jsp dentro del directorio jsp.
Puf, mucho trabajo no? Bueno, llegados a este punto deberíamos de poder desplegar en nuestro servidor y probar qué nos devuelve si introducimos en nuestro navegador la ruta "<URL_Servidor_Aplicaciones>/holamundo/holamundo.lycka". Cruzamos los dedos y…
Más información
- Spring Framework, el sitio web del framework de spring. Podrás consultar documentación y bajarte documentación, librerías , código y aplicaciones simples a modo de ejemplo.
- Developing a Spring Framework MVC application step-by-step.
[tags]Spring Framework, Spring-MVC[/tags]
También te puede interesar:
- Web Services – Primeros pasos con Eclipse – Generar Cliente Servicio Web Ya hemos publicado nuestro servicio web en un servidor. Ahora queremos generar un cliente que consuma este servicio. Para ello utilizaremos las mismas herramientas descritas...
- Web Services – Primeros pasos con Eclipse – Generar Servicio Web Herramientas necesarias JDK. En esta demo utilizaré la 1.5 IDE Desarrollo. En esta demo utilizaré el Eclipse del MEC (Profiles > Public Profiles > Web...
- Web Services – Integrar los clientes en Spring Ya sabemos cómo publicar un servicio web y cómo construir un cliente que consuma dicho servicio partiendo del fichero descriptor del contrato. Ahora integraremos el...
- Spring, Struts 1.3.8, JDBC y MySQL Vaya combinación, ya se va complicando el tema. Ahora que ya tenemos un servidor de base de datos MySQL disponible, queremos utilizarlo en nuestros proyectos...
- Demo de Spring Security 3.0 Charla en InfoQ de Mike Wiesner (Senior Consultant de Spring) que nos introduce a Spring Security 3.0 mediante una demo. Spring Security se puede utilizar...































Lycka Bonita » Spring - MVC : Capa de negocio dijo
4 de July del 2008 a las 8:35 am
[...] un poco más en nuestros conocimientos básicos de Spring – MVC. Vamos a extraer el negocio de nuestras clases controlers y vamos a llevarlos a nuevas clases de la [...]
Lycka Bonita » Integrar Struts con Spring - Teoría dijo
18 de July del 2008 a las 7:21 am
[...] ya tenemos un proyecto con Spring – MVC (holamundo) y otro con Struts (holamundoStruts138). Cuál utilizaremos para desarrollar ? Eso lo dejo [...]
samz550a dijo
22 de January del 2009 a las 12:48 am
Hola. Muchas gracias por el tutorial. Estoy intentando hacerlo funcionar, la verdad tengo poco conocimiento de estas tecnologias pero trato de defenderme.
Tengo la duda de en que lugar del proyecto, carpeta o donde tengo que colocar el
holamundo-servlet.xml para que el MVC se configure por así decirlo.
tambien para comertarte, disculpa la ignorancia, si el dato que se captura en el holamundo.jsp es de esta forma::::
ese fué mi intento pero captura null.
Gracias de antemano, tu ayuda me será de muchisimio bien
Saludos
samz550a dijo
22 de January del 2009 a las 12:50 am
por cierto, al tratar de hacerlo funcionar así como lo tengo, sin saber donde poner el xml que comento arriba, me sale::::::::::
Estado HTTP 404 – No est� disponible el Servlet holamundo
type Informe de estado
mensaje No est� disponible el Servlet holamundo
descripci�n El recurso requerido (No est� disponible el Servlet holamundo) no est� disponible.
Apache Tomcat/6.0.18
saludos
Richard dijo
3 de February del 2009 a las 8:28 pm
Coloca el XML en la raiz del proyecto, evidentemente no esta viendo el xml, y por consiguiente no ve el mapeo del servlet.
samz550a dijo
5 de March del 2009 a las 11:31 pm
Hola.
Gracias por el tutorial, ya le he hecho funcionar.
Gracias Richard por la ayuda
saludos.
Juan dijo
16 de April del 2009 a las 5:44 pm
Pues a mí me da el código de error 404.
El web.xml lo tengo en WEB-INF. Y el holamundo-servlet.xml lo tengo en src.
¿Cual puede ser el problema?
Gracias de antemano.
yoyoooyoy dijo
16 de April del 2009 a las 7:35 pm
Creo que está mal configurado.
Este finde va a ser el segundo que trabaje en toda mi vida, así que no puedo garantizarte mucha ayuda pero intentaré mandarte por mail un war con el proyecto.
Saludos
Erick Ramírez dijo
3 de September del 2009 a las 8:25 pm
Hola, he implementado el ejemplo que expones, pero no puedo sacar el error java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet, he importado diferentes versiones de los .jar de Spring y no resulta. ¿que puede ser?
De ante mano gracias.
yoyoooyoy dijo
4 de September del 2009 a las 8:55 am
Hola Erick,
pues no soy adivino
pero probablemente estás teniendo un problema de configuración en tu proyecto. La clase que comentas sí está en las librerías que utilizo en el ejemplo (asegúrate primero explorando sus contenidos) y tu IDE no la está encontrando, así que debe ser que el build path de tu proyecto no lo tienes bien configurado.
Espero que sea eso y que te haya servido!
¿Cómo se ve el futuro de Rails? | RodrigoSalinas.cl dijo
7 de May del 2010 a las 4:19 am
[...] de Persistencia del mercado (entre ellos Hibernate), utiliza Spring como inyector de dependencias, Spring MVC como framework MVC, log4j para el logging, Acegi para la seguridad, JUnit para los tests unitarios [...]
jose luis hermida mancilla dijo
7 de September del 2010 a las 5:55 pm
Saludos ya hice funcionar el ejemplo de hola mundo mvc
tambien tenia el mismo problema de que al parecer la clase Dispatcher no la veia la aplicacion eso se resuelve copiando los jar spring-mvc- a el directorio Web-inf/lib
bueno creo que seria suficiente con los archivos jar de spring 2.5 y con los common de jakarta
tambien descubri que el nombre del archivo xml tiene que ser igual al que le pusiste al nombrar el servlet y si es igual al de tu proyecto pues igual jajaja
y con eso ya corre como si fuera de carreras jajajaja
Diego Ventura dijo
6 de February del 2011 a las 8:12 pm
Listo, muchas gracias busque en varias partes y este fue el que me funciono y que esta mejor explicado lo que estamos haciendo. gracias,
yoyoooyoy dijo
7 de February del 2011 a las 9:01 am
Gracias Diego, se agradece. Lástima que no saco tiempo para aumentar la lista de tutoriales.
Web Services – Integrar los clientes en Spring | Lycka Bonita dijo
17 de February del 2011 a las 3:41 pm
[...] Podríamos partir de un nuevo proyecto dinámico web, holamundoWSClienteSpring, añadir spring.jar y spring-mvc.jar, y configurar el web.xml para utilizar Spring. O podemos partir del proyecto que ya construimos basándonos en Spring, holamundo. [...]