Tutorial de Spring MVC

1. Información general

Este es un sencillo tutorial de Spring MVC que muestra cómo configurar un proyecto Spring MVC, tanto con una configuración basada en Java como con una configuración XML.

Las dependencias de Maven para un proyecto Spring MVC se describen en detalle en el artículo de dependencias Spring MVC.

2. ¿Qué es Spring MVC?

Como sugiere el nombre, es un módulo del marco Spring que se ocupa del modelo-vista-controlador o patrón MVC . Combina todas las ventajas del patrón MVC con la comodidad de Spring.

Spring implementa MVC con el patrón de controlador frontal usando su DispatcherServlet .

En pocas palabras, DispatcherServlet actúa como el controlador principal para enrutar las solicitudes a su destino previsto. El modelo no es más que los datos de nuestra aplicación, y la vista está representada por cualquiera de los distintos motores de plantilla. Veremos JSP en nuestro ejemplo en un momento.

3. Spring MVC usando la configuración de Java

Para habilitar el soporte de Spring MVC a través de una clase de configuración de Java, todo lo que tenemos que hacer es agregar la anotación @EnableWebMvc :

@EnableWebMvc @Configuration public class WebConfig { /// ... }

Esto configurará el soporte básico que necesitamos para un proyecto MVC, como registrar controladores y mapeos, convertidores de tipo, soporte de validación, convertidores de mensajes y manejo de excepciones.

Si queremos personalizar esta configuración, necesitamos implementar la interfaz WebMvcConfigurer :

@EnableWebMvc @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); } @Bean public ViewResolver viewResolver() { InternalResourceViewResolver bean = new InternalResourceViewResolver(); bean.setViewClass(JstlView.class); bean.setPrefix("/WEB-INF/view/"); bean.setSuffix(".jsp"); return bean; } }

En este ejemplo, hemos registrado un bean ViewResolver que devolverá vistas .jsp desde el directorio / WEB-INF / view .

Muy importante aquí es que podemos registrar controladores de vista que crean un mapeo directo entre la URL y el nombre de la vista usando ViewControllerRegistry. De esta manera, no hay necesidad de ningún controlador entre los dos.

Si también queremos definir y escanear clases de controladores, podemos agregar la anotación @ComponentScan con el paquete que contiene los controladores:

@EnableWebMvc @Configuration @ComponentScan(basePackages = { "com.baeldung.web.controller" }) public class WebConfig implements WebMvcConfigurer { // ... }

Para arrancar una aplicación que carga esta configuración, también necesitamos una clase de inicializador:

public class MainWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(final ServletContext sc) throws ServletException { AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); root.scan("com.baeldung"); sc.addListener(new ContextLoaderListener(root)); ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext())); appServlet.setLoadOnStartup(1); appServlet.addMapping("/"); } }

Tenga en cuenta que para las versiones anteriores a Spring 5, tenemos que usar la clase WebMvcConfigurerAdapter en lugar de la interfaz.

4. Spring MVC usando configuración XML

Alternativamente a la configuración de Java anterior, también podemos usar una configuración puramente XML:

Si queremos usar una configuración puramente XML, también necesitaremos agregar un archivo web.xml para arrancar la aplicación. Para obtener más detalles sobre este enfoque, consulte nuestro artículo anterior.

5. Controlador y vistas

Echemos un vistazo a un ejemplo de un controlador básico:

@Controller public class SampleController { @GetMapping("/sample") public String showForm() { return "sample"; } }

Y el recurso jsp correspondiente es el archivo sample.jsp :

Los archivos de vista basados ​​en JSP se encuentran en la carpeta / WEB-INF del proyecto, por lo que solo se puede acceder a ellos desde la infraestructura de Spring y no mediante el acceso directo a URL.

6. Spring MVC con arranque

Spring Boot es una adición a Spring Platform que hace que sea muy fácil comenzar y crear aplicaciones independientes de grado de producción. Boot no está destinado a reemplazar Spring, sino a hacer que trabajar con él sea más rápido y fácil.

6.1. Arrancadores Spring Boot

El nuevo marco proporciona dependencias de inicio convenientes, que son descriptores de dependencia que pueden incorporar toda la tecnología necesaria para una determinada funcionalidad.

Estos tienen la ventaja de que ya no necesitamos especificar una versión para cada dependencia, sino que permiten que el iniciador administre las dependencias por nosotros.

La forma más rápida de comenzar es agregando el spring-boot-starter-parent pom.xml:

 org.springframework.boot spring-boot-starter-parent 2.2.2.RELEASE 

Esto se encargará de la gestión de la dependencia.

6.2. Punto de entrada de Spring Boot

Cada aplicación creada con Spring Boot solo necesita definir el punto de entrada principal. Esta suele ser una clase Java con el método principal , anotado con @SpringBootApplication :

@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 

Esta anotación agrega las siguientes otras anotaciones:

  • @Configuration - que marca la clase como fuente de definiciones de frijoles
  • @EnableAutoConfiguration - que le dice al marco que agregue beans según las dependencias en la ruta de clases automáticamente
  • @ComponentScan : busca otras configuraciones y beans en el mismo paquete que la clase Application o inferior

Con Spring Boot, podemos configurar el frontend usando Thymeleaf o JSP sin usar ViewResolver como se define en la sección 3. Al agregar la dependencia spring-boot-starter-thymeleaf a nuestro pom.xml, Thymeleaf se habilita y no es necesaria ninguna configuración adicional.

El código fuente de la aplicación Boot está, como siempre, disponible en GitHub.

Finalmente, si está buscando comenzar con Spring Boot, eche un vistazo a nuestra introducción de referencia aquí.

7. Conclusión

En este ejemplo configuramos un proyecto Spring MVC simple y funcional, usando la configuración de Java.

La implementación de este sencillo tutorial de Spring MVC se puede encontrar en el proyecto GitHub.

Cuando el proyecto se ejecuta localmente, se puede acceder a sample.jsp en // localhost: 8080 / spring-mvc-basics / sample.