Les intercepteurs sont souvent utilisés dans le printemps MVC. Lors de la configuration des chemins qui doivent être interceptés, la sous-étiquette <mvc: mapping /> est souvent utilisée. Il a un attribut de chemin, qui est utilisé pour spécifier les chemins qui doivent être interceptés. Par exemple:
<mvc: interceptor> <mvc: mapping path = "/ **" /> <bean /> </ mvc: interceptor> </ mvc: interceptor>
Selon la configuration ci-dessus, cet intercepteur intercepte toutes les demandes.
La correspondance du chemin dans Spring MVC est beaucoup plus flexible que Standard Web.xml. La stratégie par défaut implémente org.springframework.util.antpathmatcher. Tout comme son nom l'indique, le modèle de chemin utilise le chemin de style Ant Ant. Il existe trois méthodes d'appariement générique pour les chemins de style fourmi Apache (répertoriés dans le tableau ci-dessous). Ceux-ci peuvent combiner de nombreux modèles de chemin flexibles.
Caractères de la table de fourmis de table
Magazine | Description |
| ? | Faire correspondre tout caractère unique |
| * | Correspondre 0 ou n'importe quel nombre de caractères |
| ** | Correspondre 0 ou plus répertoires |
Table Exemple de motifs de chemin de style fourmi
| Chemin | Description |
| /App/*.x | Correspond à tous les fichiers .x sous le chemin de l'application |
| / app / p? ttern | Matchs / App / Pattern et / App / Pxttern, mais pas / app / pttern |
| /**/exemple | Correspond aux correspondances / app / exemple, / app / foo / exemple, et / exemple |
| / App / ** / Dir / Fichier. | Matches /App/dir/file.jsp, /app/foo/dir/file.html, /app/foo/bar/dir/file.pdf, et /app/dir/file.java |
| /**/*.jsp | Correspond à n'importe quel fichier .jsp |
Transport en main
Une application Web dépend essentiellement de la cartographie entre l'URL et le processeur de demande, et il en va de même pour Spring MVC, mais Spring MVC est comme tout ce que Spring fait (traducteur: flexible, peut configurer toutes sortes de choses, mais crée également beaucoup de complexité). Il n'y a certainement pas seulement une façon de cartographier la relation entre l'URL et le contrôleur, et en fait, il vous permet de créer vous-même des règles de cartographie et des implémentations, plutôt que de compter sur les mappages d'URL.
Spring fournit un traitement de mappage d'URL, et la commande et la méthode de traitement des modèles de chemin ne sont pas limitées à aucune interface. L'implémentation par défaut de Spring MVC org.springframework.web.servlet.handler. AbstractUrlHandlerMapping correspondra à un chemin avec le modèle de chemin le plus long.
Par exemple: étant donné une demande est /app/dir/file.jsp et il y a maintenant deux modèles de correspondance de chemin /**/*.jsp et /app/dir/*.jsp, alors, quel schéma correspondra-t-il à l'URL? Le dernier modèle /app/dir/*.jsp sera égalé par le principe des personnages les plus longs, qui a plus de personnages que /**/*.jsp. Notez que ce principe n'est spécifié dans aucune interface de haut niveau, mais est un détail d'implémentation.
BeannameurlHandlermapping
La mise en œuvre de la stratégie de mappage par défaut est la classe org.springframework.web.servlet.handler.beannameUrlHERMLAPP. Cette classe nécessite que tout haricot qui est possible pour gérer la demande doit avoir un nom ou un alias à commencer par le caractère arrière (/). Ce nom ou alias peut être n'importe quel nom conforme au principe de correspondance du chemin d'URL.
Listing d'un contrôleur mappé par un nom de haricot
code XML
<bean name = "/ home"> <propriété name = "FlightService" Ref = "FlightService" /> </bEAN>
■ Remarque: Vous ne pouvez pas utiliser l'attribut ID pour spécifier un chemin d'accès URL, car (/) les caractères sont interdits dans les spécifications XML pour spécifier l'ID du XML, mais vous pouvez avoir à la fois des attributs d'ID et de nom dans une définition de bean.
Il est très facile à utiliser et a des inconvénients. Il ne peut pas faire allusion à un prototype de haricot. En d'autres termes, lors de l'utilisation de beannameUrlHandlermapping, toutes les classes de traitement de demande ne peuvent être que des singletons. D'une manière générale, les contrôleurs sont établis en fonction des singletons, ce n'est donc pas un problème très grave. De plus, je présenterai des contrôleurs dans les chapitres suivants, et il n'y aura que peu de types de contrôleurs qui doivent être des prototypes.
■ Remarque: Le prototype de haricot est un haricot non-Singleton. Chaque fois que la méthode GetBean () d'ApplicationContext est appelée, une nouvelle instance Bean sera renvoyée.
Un autre problème avec BeannameUrlHandlerMapping est que l'intercepteur est appliqué dans votre application. Étant donné que la carte demandée et la carte imapvoyante des haricots sont liées ensemble et ne sont pas séparées, il est impossible de créer des relations complexes entre le contrôleur et l'intercepteur. Si vous avez des exigences de mappage de demandes complexes, vous pouvez utiliser SimpleUrlHandlermapping au lieu de BeannameUrlHandlerMapping. SimpleUrlHandlerMapping est une autre option pour BeannameUrlHandlerMapping. SimpleUrlHandlermapping pointe directement vers les deux faiblesses majeures de BeannameurlHandlermapping. Il peut cartographier les processeurs de demande de type prototype et vous permet de créer des chemins de mappage complexes et flexibles entre les gestionnaires et les intercepteurs. L'algorithme de mappage utilise les mêmes composants de base que BeannameUrlHandlerMapping, de sorte que ce modèle est toujours pour cartographier les URL pour demander des gestionnaires (demandeurs de gestionnaires), vous pouvez simplement le déclarer dans l'applicationContext et utiliser SimpleUrlHerLermapping. Le Dispatcherservlet sera trouvé en fonction du type et ne créera pas le mappeur par défaut (BeannameUrlHandlerMapping). Cela signifie que si vous souhaitez utiliser les deux, vous devez tout déclarer dans l'applicationContext.
■ Invite Dispatcherservlet traitera les demandes dans la chaîne (traducteur: les demandes de processus en séquence, vous pouvez vous référer au mode chaîne de responsabilité dans les filtres et les BOF), ce qui permet de traiter les mappages en fonction de vos exigences. Le processeur de mappage (mappages de gestionnaire) implémente l'interface OrdeRDR.
Ce qui précède est tout le contenu de cet article sur l'explication détaillée du principe de correspondance du chemin MVC Spring, j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!