Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Spring Mvc | Notions de Base de Spring Boot
Spring Boot Backend

bookSpring Mvc

Pourquoi utiliser Spring MVC

Spring MVC permet d’organiser une application web en suivant le principe de séparation des responsabilités, ce qui facilite le développement, les tests et la maintenance du code. Il fournit un cadre pour créer des pages web et gérer les requêtes utilisateur, ainsi que pour s’intégrer à la logique métier et aux bases de données.

Dans notre application, nous utilisons une architecture à trois niveaux pour séparer la logique en modules distincts. Nous avons les couches repository, service et controller. Cette séparation facilite la maintenance et les tests de l’application.

Annotations clés et leur rôle

Pour chaque couche, il existe des annotations spécifiques, essentielles pour que Spring puisse reconnaître et enregistrer automatiquement les composants dans le contexte de l'application (nous expliquerons ce que cela signifie plus tard). Cela permet de maintenir une architecture plus claire et d'améliorer la lisibilité du code.

Annotation de la couche Repository

L'annotation @Repository est utilisée pour indiquer une classe qui interagit avec la base de données. Ces classes contiennent généralement des méthodes permettant d'effectuer des opérations CRUD (Create, Read, Update, Delete).

UserRepository.java

UserRepository.java

copy
1234567
@Repository public class UserRepository { // Method to find a user by their ID public User findById(Long id) { // Logic to retrieve the user from the database } }

Dans cet exemple, UserRepository est marqué comme un repository, permettant à Spring de gérer les exceptions liées à l'accès aux données et de l'intégrer automatiquement dans l'application.

Annotation de la couche Service

L'annotation @Service est utilisée pour désigner une classe comme un composant de la logique métier. Ces classes contiennent des méthodes qui implémentent les règles et opérations métier de l'application.

UserService.java

UserService.java

copy
1234567
@Service public class UserService { // Method to retrieve a user by their ID public User getUserById(Long id) { // Logic to get the user by ID } }

L’annotation @Service indique que cette classe contient la logique métier de l’application, ce qui la rend facile à utiliser dans d’autres parties de l’application. Cela simplifie le développement, car il n’est pas nécessaire de créer manuellement des instances de cette classe — Spring s’en charge automatiquement.

Annotation de la couche Controller

Étant donné que la couche contrôleur sert de point d'interaction entre le client et notre application, il est nécessaire d'établir des points de terminaison pour permettre aux clients d'y accéder. Cela implique d'associer des URL spécifiques à chaque méthode, permettant ainsi aux clients d'interagir directement avec ces méthodes.

Pour cela, il convient d'annoter la classe avec @Controller et de définir une méthode qui jouera le rôle de gestionnaire de requêtes.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home() { // code } }

L'annotation @RequestMapping est utilisée pour lier les requêtes HTTP à des méthodes spécifiques dans le contrôleur. Elle permet de spécifier quels modèles d'URL et quels types de requêtes (comme GET ou POST) une méthode doit traiter. Par exemple, dans ce cas, la méthode home() répondra aux requêtes GET effectuées sur l'URL racine.

Lorsqu’un utilisateur visite example.com/, son navigateur envoie une requête HTTP GET au serveur, qui atteint l’application Spring. Le framework Spring trouve l’annotation @RequestMapping correspondante dans le HomeController, appelle la méthode home() pour traiter la requête, puis renvoie la réponse appropriée au navigateur de l’utilisateur.

Il existe des annotations qui permettent un mappage plus précis selon le type de méthode de requête, telles que @GetMapping, @PostMapping, @DeleteMapping, etc. Dans leurs attributs, il suffit d’indiquer l’URL qui peut être utilisée pour y accéder.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @GetMapping("/home") public String home() { // code } }

Dans cet exemple, si l’on accède à l’URL /home, on sera redirigé vers la méthode home() UNIQUEMENT s’il s’agit d’une requête GET. Si un autre type de méthode de requête est utilisé, le serveur répondra par une erreur 404 Not Found pour cette URL.

@RequestParam

Que sont les paramètres de requête d’URL ? Il s’agit des paramètres qui apparaissent après le point d’interrogation dans l’URL. Par exemple, si l’on a l’adresse -> example.com/home?name=Alex (clé = name, valeur = Alex), on peut directement récupérer le paramètre (name) dans la méthode welcomeUser().

Main.java

Main.java

copy
12345678
@Controller public class WelcomeController { @GetMapping("/home") public String welcomeUser(@RequestParam(name = "name") String name) { // code } }

Ici, le paramètre name est extrait de l'URL (/home?name=Alex) et transmis à la méthode welcomeUser().

Il est également possible d'extraire plusieurs paramètres, et non un seul. Tous les paramètres dans l'URL doivent être séparés par le symbole &. Par exemple : example.com/home?name=Alex&age=20.

Main.java

Main.java

copy
12345
@GetMapping("/home") public String getUserInfo(@RequestParam String name, @RequestParam int age) { // Logic to handle the request using 'name' and 'age' parameters return "User Name: " + name + ", Age: " + age; }

Dans cet exemple, le point de terminaison /home peut être accédé via une URL telle que example.com/home?name=Alex&age=20, où name et age sont les paramètres transmis à la méthode.

@PathVariable

Dans Spring MVC, l’annotation @PathVariable est utilisée pour lier une variable de l’URL directement à un paramètre de méthode. Elle permet de capturer des valeurs dynamiques depuis l’URL et de les utiliser dans la méthode.

Si vous devez définir dynamiquement une URL, c’est-à-dire transmettre une valeur directement dans l’URL elle-même, vous pouvez utiliser l’annotation @PathVariable.

Par exemple, si vous avez un modèle d’URL comme /users/{id}, vous pouvez utiliser @PathVariable pour accéder à la partie {id} de l’URL et la transmettre comme paramètre à votre méthode.

Main.java

Main.java

copy
12345678
@Controller public class UserController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") Long userId) { // code } }

Dans cet exemple, id est extrait de l’URL (/user/123) et transmis à la méthode getUser(), où la valeur 123 est assignée au paramètre userId.

Ces annotations permettent aux développeurs de configurer facilement la gestion des requêtes HTTP, de lier les données aux objets et de gérer les réponses, améliorant ainsi la lisibilité et la maintenabilité du code.

Résumé

Spring MVC simplifie le développement des applications web en séparant la gestion des requêtes, la logique applicative et le rendu des vues. Les contrôleurs, marqués par l’annotation @Controller ou @RestController, gèrent les requêtes et renvoient les données à afficher.

1. Que fait l’annotation @Controller dans Spring MVC ?

2. Quelle annotation est utilisée pour gérer les GET requests dans Spring MVC ?

question mark

Que fait l’annotation @Controller dans Spring MVC ?

Select the correct answer

question mark

Quelle annotation est utilisée pour gérer les GET requests dans Spring MVC ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

What is the difference between @RequestParam and @PathVariable?

Can you explain more about the three-tier architecture in Spring MVC?

How does Spring automatically create instances of annotated classes?

Awesome!

Completion rate improved to 3.45

bookSpring Mvc

Glissez pour afficher le menu

Pourquoi utiliser Spring MVC

Spring MVC permet d’organiser une application web en suivant le principe de séparation des responsabilités, ce qui facilite le développement, les tests et la maintenance du code. Il fournit un cadre pour créer des pages web et gérer les requêtes utilisateur, ainsi que pour s’intégrer à la logique métier et aux bases de données.

Dans notre application, nous utilisons une architecture à trois niveaux pour séparer la logique en modules distincts. Nous avons les couches repository, service et controller. Cette séparation facilite la maintenance et les tests de l’application.

Annotations clés et leur rôle

Pour chaque couche, il existe des annotations spécifiques, essentielles pour que Spring puisse reconnaître et enregistrer automatiquement les composants dans le contexte de l'application (nous expliquerons ce que cela signifie plus tard). Cela permet de maintenir une architecture plus claire et d'améliorer la lisibilité du code.

Annotation de la couche Repository

L'annotation @Repository est utilisée pour indiquer une classe qui interagit avec la base de données. Ces classes contiennent généralement des méthodes permettant d'effectuer des opérations CRUD (Create, Read, Update, Delete).

UserRepository.java

UserRepository.java

copy
1234567
@Repository public class UserRepository { // Method to find a user by their ID public User findById(Long id) { // Logic to retrieve the user from the database } }

Dans cet exemple, UserRepository est marqué comme un repository, permettant à Spring de gérer les exceptions liées à l'accès aux données et de l'intégrer automatiquement dans l'application.

Annotation de la couche Service

L'annotation @Service est utilisée pour désigner une classe comme un composant de la logique métier. Ces classes contiennent des méthodes qui implémentent les règles et opérations métier de l'application.

UserService.java

UserService.java

copy
1234567
@Service public class UserService { // Method to retrieve a user by their ID public User getUserById(Long id) { // Logic to get the user by ID } }

L’annotation @Service indique que cette classe contient la logique métier de l’application, ce qui la rend facile à utiliser dans d’autres parties de l’application. Cela simplifie le développement, car il n’est pas nécessaire de créer manuellement des instances de cette classe — Spring s’en charge automatiquement.

Annotation de la couche Controller

Étant donné que la couche contrôleur sert de point d'interaction entre le client et notre application, il est nécessaire d'établir des points de terminaison pour permettre aux clients d'y accéder. Cela implique d'associer des URL spécifiques à chaque méthode, permettant ainsi aux clients d'interagir directement avec ces méthodes.

Pour cela, il convient d'annoter la classe avec @Controller et de définir une méthode qui jouera le rôle de gestionnaire de requêtes.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home() { // code } }

L'annotation @RequestMapping est utilisée pour lier les requêtes HTTP à des méthodes spécifiques dans le contrôleur. Elle permet de spécifier quels modèles d'URL et quels types de requêtes (comme GET ou POST) une méthode doit traiter. Par exemple, dans ce cas, la méthode home() répondra aux requêtes GET effectuées sur l'URL racine.

Lorsqu’un utilisateur visite example.com/, son navigateur envoie une requête HTTP GET au serveur, qui atteint l’application Spring. Le framework Spring trouve l’annotation @RequestMapping correspondante dans le HomeController, appelle la méthode home() pour traiter la requête, puis renvoie la réponse appropriée au navigateur de l’utilisateur.

Il existe des annotations qui permettent un mappage plus précis selon le type de méthode de requête, telles que @GetMapping, @PostMapping, @DeleteMapping, etc. Dans leurs attributs, il suffit d’indiquer l’URL qui peut être utilisée pour y accéder.

Main.java

Main.java

copy
12345678
@Controller public class HomeController { @GetMapping("/home") public String home() { // code } }

Dans cet exemple, si l’on accède à l’URL /home, on sera redirigé vers la méthode home() UNIQUEMENT s’il s’agit d’une requête GET. Si un autre type de méthode de requête est utilisé, le serveur répondra par une erreur 404 Not Found pour cette URL.

@RequestParam

Que sont les paramètres de requête d’URL ? Il s’agit des paramètres qui apparaissent après le point d’interrogation dans l’URL. Par exemple, si l’on a l’adresse -> example.com/home?name=Alex (clé = name, valeur = Alex), on peut directement récupérer le paramètre (name) dans la méthode welcomeUser().

Main.java

Main.java

copy
12345678
@Controller public class WelcomeController { @GetMapping("/home") public String welcomeUser(@RequestParam(name = "name") String name) { // code } }

Ici, le paramètre name est extrait de l'URL (/home?name=Alex) et transmis à la méthode welcomeUser().

Il est également possible d'extraire plusieurs paramètres, et non un seul. Tous les paramètres dans l'URL doivent être séparés par le symbole &. Par exemple : example.com/home?name=Alex&age=20.

Main.java

Main.java

copy
12345
@GetMapping("/home") public String getUserInfo(@RequestParam String name, @RequestParam int age) { // Logic to handle the request using 'name' and 'age' parameters return "User Name: " + name + ", Age: " + age; }

Dans cet exemple, le point de terminaison /home peut être accédé via une URL telle que example.com/home?name=Alex&age=20, où name et age sont les paramètres transmis à la méthode.

@PathVariable

Dans Spring MVC, l’annotation @PathVariable est utilisée pour lier une variable de l’URL directement à un paramètre de méthode. Elle permet de capturer des valeurs dynamiques depuis l’URL et de les utiliser dans la méthode.

Si vous devez définir dynamiquement une URL, c’est-à-dire transmettre une valeur directement dans l’URL elle-même, vous pouvez utiliser l’annotation @PathVariable.

Par exemple, si vous avez un modèle d’URL comme /users/{id}, vous pouvez utiliser @PathVariable pour accéder à la partie {id} de l’URL et la transmettre comme paramètre à votre méthode.

Main.java

Main.java

copy
12345678
@Controller public class UserController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") Long userId) { // code } }

Dans cet exemple, id est extrait de l’URL (/user/123) et transmis à la méthode getUser(), où la valeur 123 est assignée au paramètre userId.

Ces annotations permettent aux développeurs de configurer facilement la gestion des requêtes HTTP, de lier les données aux objets et de gérer les réponses, améliorant ainsi la lisibilité et la maintenabilité du code.

Résumé

Spring MVC simplifie le développement des applications web en séparant la gestion des requêtes, la logique applicative et le rendu des vues. Les contrôleurs, marqués par l’annotation @Controller ou @RestController, gèrent les requêtes et renvoient les données à afficher.

1. Que fait l’annotation @Controller dans Spring MVC ?

2. Quelle annotation est utilisée pour gérer les GET requests dans Spring MVC ?

question mark

Que fait l’annotation @Controller dans Spring MVC ?

Select the correct answer

question mark

Quelle annotation est utilisée pour gérer les GET requests dans Spring MVC ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 3
some-alt