Tutoriel Spring MVC

1. Vue d'ensemble

Il s'agit d'un simple didacticiel Spring MVC montrant comment configurer un projet Spring MVC, à la fois avec une configuration Java et avec une configuration XML.

Les dépendances Maven pour un projet Spring MVC sont décrites en détail dans l'article sur les dépendances de Spring MVC.

2. Qu'est-ce que Spring MVC?

Comme son nom l'indique, il s'agit d'un module du framework Spring traitant du modèle Model-View-Controller ou MVC . Il combine tous les avantages du modèle MVC avec la commodité de Spring.

Spring implémente MVC avec le modèle de contrôleur frontal à l'aide de son DispatcherServlet .

En un mot, le DispatcherServlet agit en tant que contrôleur principal pour acheminer les demandes vers leur destination prévue. Le modèle n'est rien d'autre que les données de notre application et la vue est représentée par l'un des différents moteurs de modèle. Nous examinerons les JSP dans notre exemple dans un moment.

3. Spring MVC utilisant la configuration Java

Pour activer la prise en charge de Spring MVC via une classe de configuration Java, tout ce que nous avons à faire est d' ajouter l' annotation @EnableWebMvc :

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

Cela mettra en place le support de base dont nous avons besoin pour un projet MVC, tel que l'enregistrement des contrôleurs et des mappages, les convertisseurs de type, le support de validation, les convertisseurs de messages et la gestion des exceptions.

Si nous voulons personnaliser cette configuration, nous devons implémenter l' interface 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; } }

Dans cet exemple, nous avons enregistré un bean ViewResolver qui renverra des vues .jsp du répertoire / WEB-INF / view .

Il est très important ici de pouvoir enregistrer des contrôleurs de vue qui créent un mappage direct entre l'URL et le nom de la vue à l'aide de ViewControllerRegistry. De cette façon, il n'y a pas besoin de contrôleur entre les deux.

Si nous voulons également définir et analyser les classes de contrôleurs, nous pouvons ajouter l' annotation @ComponentScan avec le package contenant les contrôleurs:

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

Pour amorcer une application qui charge cette configuration, nous avons également besoin d'une classe d'initialisation:

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("/"); } }

Notez que pour les versions antérieures à Spring 5, nous devons utiliser la classe WebMvcConfigurerAdapter au lieu de l'interface.

4. Spring MVC utilisant la configuration XML

Alternativement à la configuration Java ci-dessus, nous pouvons également utiliser une configuration purement XML:

Si nous voulons utiliser une configuration purement XML, nous devrons également ajouter un fichier web.xml pour démarrer l'application. Pour plus de détails sur cette approche, consultez notre article précédent.

5. Contrôleur et vues

Jetons un coup d'œil à un exemple de contrôleur de base:

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

Et la ressource jsp correspondante est le fichier sample.jsp :

Les fichiers de vue basés sur JSP sont situés sous le dossier / WEB-INF du projet, ils sont donc uniquement accessibles à l'infrastructure Spring et non par accès URL direct.

6. Spring MVC avec démarrage

Spring Boot est un ajout à Spring Platform qui facilite la mise en route et la création d'applications autonomes de niveau production. Boot n'est pas destiné à remplacer Spring, mais à rendre son utilisation plus rapide et plus facile.

6.1. Démarreurs Spring Boot

Le nouveau cadre fournit des dépendances de démarrage pratiques - qui sont des descripteurs de dépendances qui peuvent apporter toute la technologie nécessaire pour une certaine fonctionnalité.

Ceux-ci ont l'avantage que nous n'avons plus besoin de spécifier une version pour chaque dépendance, mais permettent au démarreur de gérer les dépendances pour nous.

Le moyen le plus rapide de commencer est d'ajouter le fichier spring-boot-starter-parent pom.xml:

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

Cela prendra en charge la gestion des dépendances.

6.2. Point d'entrée de la botte à ressort

Chaque application créée à l'aide de Spring Boot doit simplement définir le point d'entrée principal. Il s'agit généralement d'une classe Java avec la méthode principale , annotée avec @SpringBootApplication :

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

Cette annotation ajoute les autres annotations suivantes:

  • @Configuration - qui marque la classe comme source de définitions de bean
  • @EnableAutoConfiguration - qui indique au framework d'ajouter automatiquement des beans en fonction des dépendances sur le chemin de classe
  • @ComponentScan - qui recherche d'autres configurations et beans dans le même package que la classe Application ou inférieure

Avec Spring Boot, nous pouvons configurer le frontend en utilisant Thymeleaf ou JSP sans utiliser ViewResolver comme défini dans la section 3. En ajoutant une dépendance spring-boot-starter-thymeleaf à notre pom.xml, Thymeleaf est activé et aucune configuration supplémentaire n'est nécessaire.

Le code source de l'application Boot est, comme toujours, disponible sur GitHub.

Enfin, si vous souhaitez vous familiariser avec Spring Boot, jetez un œil à notre introduction de référence ici.

7. Conclusion

Dans cet exemple, nous avons configuré un projet Spring MVC simple et fonctionnel, en utilisant la configuration Java.

L'implémentation de ce simple tutoriel Spring MVC se trouve dans le projet GitHub.

Lorsque le projet s'exécute localement, le fichier sample.jsp est accessible à l' adresse // localhost: 8080 / spring-mvc-basics / sample.