Maison >Java >javaDidacticiel >Restaurant MVC de printemps

Restaurant MVC de printemps

DDD
DDDoriginal
2024-10-24 04:40:30279parcourir

Imaginez que Spring MVC n'est pas seulement un framework, mais une sorte de restaurant. Vous venez au restaurant (envoyez une requête HTTP), et là la magie commence, et voici comment ça se passe dans le monde de Spring MVC :

Vous entrez dans un restaurant - DispatcherServlet de garde
Imaginez-vous entrer dans le restaurant Spring MVC. Mais avant de passer à table, vous êtes accueilli par le portier en chef - DispatcherServlet. Il personnifie l'officier de première ligne et gère toutes les commandes. Votre requête HTTP est comme votre premier salut au portier : vous voulez quelque chose de savoureux.

Ресторан Spring MVC

DispatcherServlet ne prépare pas la nourriture lui-même, il transmet simplement la demande au « chef » souhaité, c'est-à-dire votre contrôleur, qui préparera le plat. Mais nous en reparlerons un peu plus tard. Tout d'abord, le portier vérifiera le menu pour voir quel chef peut vous préparer ce que vous voulez.

Handler recherchant des recettes - HandlerMapping
Dès que vous dites : « Je veux quelque chose de savoureux ! », le portier (notre vaillant DispatcherServlet) ne se précipite pas immédiatement dans la cuisine. Non, il ouvre d'abord HandlerMapping, où il a tous les plats de restaurant possibles et le chef qui peut les préparer.

Vous demandez, disons, un gâteau. Le portier regarde ses notes et constate que le chef John prépare les gâteaux à partir du ChefController.

Ресторан Spring MVC

Le portier envoie la commande à la cuisine - HandlerAdapter
Une fois que le portier a trouvé un chef approprié, il fait appel à HandlerAdapter, son assistant, qui l'aide à emballer la commande et à la transférer en cuisine au chef. C'est comme si le portier murmurait simplement : « John, prépare un gâteau au client, viens vite ! »

Le chef prépare le plat – Contrôleur

Ресторан Spring MVC
Maintenant, le chef John prend le relais. C'est notre contrôleur qui fait la cuisine. Selon la demande du client, il peut réaliser différents gâteaux. Par exemple, si la requête était GET, John peut simplement montrer les gâteaux prêts à l'emploi (les sortir du réfrigérateur). Et si la demande est POST, alors peut-être avez-vous demandé un gâteau à la crème fraîche, et John commencera à cuisiner.

Exemple :

@GetMapping("/cakes")
liste publique getCakes() {
return List.of("Napoléon", "Tiramisu", "Cheesecake");
>
Ce chef n'est pas du genre à hésiter, il distribue immédiatement une liste de gâteaux !

Décoration de plat - ViewResolver
Une fois le plat prêt, il faut le présenter joliment. C'est là que ViewResolver entre en jeu. Il est comme un créateur d'assiettes : il décide sous quelle forme le plat sera servi au client. Vous ne voulez pas seulement voir un tas d'ingrédients, vous voulez un gâteau joliment décoré !

ViewResolver peut décider que le gâteau doit être servi sur une assiette dorée (JSP), ou dans une boîte (JSON) si vous l'avez commandé à emporter.

Voila ! Plat sur votre table - Réponse HTTP
Enfin, le plat est prêt et servi. Votre client (navigateur) reçoit une réponse du restaurant. Selon votre commande, il peut s'agir d'une page HTML contenant les gâteaux, ou d'un objet JSON si vous avez commandé via une application de vente à emporter.

Par exemple, le chef John a décidé de soumettre une liste de gâteaux en JSON :

@GetMapping("/cakes")
@ResponseBody
liste publique getCakes() {
return List.of("Tiramisu", "Napoléon", "Eclair");
>
Le client a reçu du JSON avec des gâteaux et sa vie est devenue meilleure !

Et si quelque chose n'allait pas ? — Gestion des exceptions

Ресторан Spring MVC
Comme dans tout restaurant, il arrive parfois que les choses tournent mal. Par exemple, tout à coup, le chef John a laissé tomber votre gâteau par terre ! Dans le monde Spring MVC, cela équivaut à une exception (par exemple, la demande n'a pas pu être traitée).

Mais ne vous inquiétez pas, Spring Restaurant a un serveur spécial appelé ExceptionHandler qui répondra rapidement et vous présentera des excuses ou une nouvelle commande.

@ExceptionHandler(NoCakesAvailableException.class)
public ResponseEntity handleNoCakes(NoCakesAvailableException e){
return new ResponseEntity<>("Désolé, tous les gâteaux sont sortis !", HttpStatus.NOT_FOUND);
>
De cette façon, si du coup nous n’avons plus de gâteaux, ils vous diront que tout est fini et vous demanderont pardon.

Conclusion
Vous comprenez maintenant que Spring MVC est comme un restaurant avec un système de services clairement structuré. Ici, le portier (DispatcherServlet) prend vos commandes, trouve le bon chef (Controller) qui prépare les plats (gère les demandes) et les serveurs (HandlerAdapter et ViewResolver) livrent le résultat joliment présenté. Même si quelque chose ne va pas, l'ExceptionHandler est toujours prêt à sauvegarder.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn