Spring MVC Tutorial

** 1. Vue d’ensemble

**

Ceci est un simple tutoriel Spring MVC montrant comment configurer un projet Spring MVC, à la fois avec une configuration basée sur Java et avec une configuration XML.

Les dépendances Maven d’un projet Spring MVC sont décrites en détail dans l’article de lien:/spring-with-maven # mvc[Dépendances Spring MVC].

** 2. Spring MVC à l’aide de la configuration Java

**

Pour activer la prise en charge de Spring MVC via une classe de configuration Java, il suffit d’ajouter l’annotation @ EnableWebMvc :

@EnableWebMvc
@Configuration
public class ClientWebConfig {

   ///...
}

Cela définira 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 types, 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 ClientWebConfig implements WebMvcConfigurer {

   @Override
   public void addViewControllers(ViewControllerRegistry registry) {
      registry.addViewController("/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 les vues .jsp du répertoire /WEB-INF/view .

Il est très important ici que nous puissions enregistrer les 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 manière, aucun contrôleur n’est nécessaire entre les deux.

Si nous voulons également définir et analyser les classes de contrôleur, 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 à la place de l’interface.

3. Spring MVC utilisant la configuration XML

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

<context:component-scan base-package="com.baeldung.web.controller"/>
<mvc:annotation-driven/>

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <mvc:view-controller path="/" view-name="index"/>

</beans>

Si vous souhaitez utiliser une configuration purement XML, vous devez également ajouter un fichier web.xml pour amorcer l’application. Pour plus de détails sur cette approche, consultez notre article précédent .

4. Contrôleur et vues

Voyons 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 :

<html>
   <head></head>

   <body>
      <h1>This is the body of the sample view</h1>
   </body>
</html>

Les fichiers de vue basés sur JSP se trouvent dans le dossier/ WEB-INF du projet. Ils ne sont donc accessibles que par l’infrastructure Spring et non par un accès direct à une URL.

5. Spring MVC avec démarrage

Spring Boot est un ajout à la plate-forme Spring, qui permet de démarrer et de créer facilement des applications autonomes de niveau production.

  • Boot n’est pas destiné à remplacer Spring, mais à faciliter et accélérer son utilisation. **

5.1. Démarreurs Spring

  • Le nouveau cadre fournit des dépendances de démarrage pratiques - qui sont des descripteurs de dépendance ** pouvant apporter toute la technologie nécessaire à une fonctionnalité donnée.

Celles-ci présentent l’avantage que nous n’avons plus besoin de spécifier une version pour chaque dépendance mais de permettre au démarreur de gérer les dépendances pour nous.

Le moyen le plus rapide de commencer est d’ajouter https://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22spring-boot-starter-parent%22 pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

Cela prendra en charge la gestion de la dépendance.

** 5.2. Point d’entrée de la botte de printemps

**

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 main , 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 bean

les définitions ** @ EnableAutoConfiguration - qui indique au framework d’ajouter des beans

basé sur les dépendances sur le classpath automatiquement ** @ ComponentScan - qui recherche d’autres configurations et beans dans

le même paquet que la classe Application ou inférieure

Avec Spring Boot, nous pouvons configurer une interface avec Thymeleaf ou JSP sans utiliser ViewResolver comme défini dans la section 3. En ajoutant 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 de démarrage est, comme toujours, disponible à l’adresse over sur GitHub .

Enfin, si vous souhaitez utiliser Spring Boot, consultez notre lien:/spring-boot-start[référence intro ici].

6. Conclusion

Dans cet exemple, nous avons configuré un projet Spring MVC simple et fonctionnel, à l’aide de la configuration Java.

L’implémentation de ce simple tutoriel Spring MVC est disponible à l’adresse the GitHub - il s’agit d’un projet basé sur Eclipse, il devrait donc être facile à importer et à exécuter tel quel.

Lorsque le projet est exécuté localement, vous pouvez accéder à _sample.jsp à l’adresse suivante: http://localhost : 8080/spring-mvc-java/sample._