Introduction détaillée à l'intercepteur Spring MVC
L'intercepteur de Spring MVC est au niveau HandlerMapping. Il peut y avoir plusieurs HandlerMappings. Chaque HandlerMapping peut avoir son propre intercepteur
Spring nous fournit :
interface org.springframework.web.servlet.HandlerInterceptor,
adaptateur org.springframework.web.servlet.handler.HandlerInterceptorAdapter,
implémente cette interface ou hériter de cette classe la rend très pratique pour implémenter votre propre intercepteur.
a les trois méthodes suivantes :
Exécuté avant l'action :
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler);
Exécuter avant de générer la vue
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView);
Enfin exécuté, peut être utilisé pour libérer des ressources
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
Implémenter respectivement le pré-traitement, le post-traitement (le service est appelé et renvoie ModelAndView, mais la page n'est pas rendue) et le traitement de retour (la page a été rendue)
Dans preHandle, le codage et la sécurité peuvent être effectués Contrôle et autres traitements ;
Dans postHandle, vous avez la possibilité de modifier ModelAndView
Dans afterCompletion, vous pouvez déterminer si une exception s'est produite et effectuer journalisation selon que ex est nul.
Le gestionnaire d'objet dans le paramètre est le prochain intercepteur.
Comment utiliser les intercepteurs ?
Personnaliser un intercepteur et implémenter l'interface HandlerInterceptor :
Le code Java
public class MyInteceptor implements HandlerInterceptor { 略。。。 }
Spring MVC fait ne pas avoir d'intercepteur total et ne peut pas intercepter toutes les demandes avant et après.
L'intercepteur de Spring MVC est au niveau HandlerMapping. Il peut y avoir plusieurs HandlerMappings, et chaque HandlerMapping peut avoir son propre intercepteur.
Lorsqu'une requête exécute les classes d'implémentation de l'interface HandlerMapping séquentiellement en fonction de la valeur Order de petite à grande, selon la première éventualité, elle est terminée. Le HandlerMapping suivant ne disparaîtra pas et ce processus est terminé. . Passez simplement au processus suivant.
Quand l’intercepteur sera-t-il exécuté ? Lorsqu'une requête est transmise à un HandlerMapping, le HandlerMapping recherche d'abord un processeur pour gérer la requête. S'il le trouve, il exécute l'interception, puis le transmet au processeur cible.
Si aucun gestionnaire n'est trouvé, alors cet intercepteur ne sera pas exécuté.
Il existe trois façons de le configurer dans le fichier de configuration Spring MVC :
Option 1, intercepteur total (approximatif), intercepter toutes les URL
Code Java
<mvc:interceptors> <bean class="com.app.mvc.MyInteceptor" /> </mvc:interceptors>
Pourquoi est-il appelé « approximatif » Comme mentionné précédemment, Spring n'a pas d'intercepteur total ?
<mvc:interceptors/>
injectera un intercepteur pour chaque HandlerMapping. Il y a toujours un HandlerMapping qui peut trouver le processeur, et au plus un seul processeur peut être trouvé, donc cet intercepteur sera toujours exécuté. Agit comme un intercepteur total.
S'il s'agit d'une URL de style REST, les ressources statiques seront également interceptées.
Option 2, intercepteur total (approximatif), intercepte les URL correspondantes.
Le code XML
<mvc:interceptors > <mvc:interceptor> <mvc:mapping path="/user/*" /> <!-- /user/* --> <bean class="com.mvc.MyInteceptor"></bean> </mvc:interceptor> </mvc:interceptors>
est une correspondance d'URL de plus que l'option 1.
S'il s'agit d'une URL de style REST, les ressources statiques seront également interceptées.
Option 3, intercepteur sur HandlerMappint.
S'il s'agit d'une URL de style REST, les ressources statiques ne seront pas interceptées. Parce que nous avons injecté l'intercepteur avec précision.
Code XML
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <bean class="com.mvc.MyInteceptor"></bean> </list> </property> </bean>
Si vous utilisez <mvc:annotation-driven />,
, il enregistrera automatiquement les deux beans DefaultAnnotationHandlerMapping et AnnotationMethodHandlerAdapter, il n'y aura donc aucune chance pour le redonner Il injecte l'attribut intercepteurs, donc l'intercepteur ne peut pas être spécifié.
Bien sûr, nous pouvons configurer manuellement les deux beans ci-dessus sans utiliser <mvc:annotation-driven />, puis injecter des intercepteurs dans l'attribut interceptors.
En fait, je ne recommande pas d'utiliser <mvc:annotation-driven />,
, mais recommande plutôt d'écrire manuellement des fichiers de configuration détaillés au lieu de <mvc:annotation-driven />
, ce qui vous donne un contrôle plus fort. Comment remplacer
par <mvc:annotation-driven />
? Qu'a-t-il fait exactement ?
Une phrase <mvc:annotation-driven />
En fait, nous avons effectué le travail suivant : (à l'exclusion de l'ajout de votre propre intercepteur défini)
Après avoir compris cela, nous avons plus de contrôle sur Spring3 MVC et souhaitons le modifier n'importe où tu vas.
Code XML
<!-- 注解请求映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="logNDCInteceptor"/> <!-- 日志拦截器,这是你自定义的拦截器 --> <ref bean="myRequestHelperInteceptor"/> <!-- RequestHelper拦截器,这是你自定义的拦截器--> <ref bean="myPermissionsInteceptor"/> <!-- 权限拦截器,这是你自定义的拦截器--> <ref bean="myUserInfoInteceptor"/> <!-- 用户信息拦截器,这是你自定义的拦截器--> </list> </property> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="byteArray_hmc" /> <ref bean="string_hmc" /> <ref bean="resource_hmc" /> <ref bean="source_hmc" /> <ref bean="xmlAwareForm_hmc" /> <ref bean="jaxb2RootElement_hmc" /> <ref bean="jackson_hmc" /> </list> </property> </bean> <bean id="byteArray_hmc" class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><!-- 处理.. --> <bean id="string_hmc" class="org.springframework.http.converter.StringHttpMessageConverter" /><!-- 处理.. --> <bean id="resource_hmc" class="org.springframework.http.converter.ResourceHttpMessageConverter" /><!-- 处理.. --> <bean id="source_hmc" class="org.springframework.http.converter.xml.SourceHttpMessageConverter" /><!-- 处理.. --> <bean id="xmlAwareForm_hmc" class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" /><!-- 处理.. --> <bean id="jaxb2RootElement_hmc" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /><!-- 处理.. --> <bean id="jackson_hmc" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /><!-- 处理json-->
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les utilisateurs ont peut-être vu le terme wapi lorsqu'ils utilisent Internet, mais pour certaines personnes, ils ne savent certainement pas ce qu'est wapi. Ce qui suit est une introduction détaillée pour aider ceux qui ne le savent pas à comprendre. Qu'est-ce que wapi : Réponse : wapi est l'infrastructure pour l'authentification et la confidentialité du réseau local sans fil. C'est le cas des fonctions telles que l'infrarouge et le Bluetooth, qui sont généralement couvertes à proximité de lieux tels que les immeubles de bureaux. Fondamentalement, ils appartiennent à un petit département, la portée de cette fonction n'est donc que de quelques kilomètres. Introduction connexe à Wapi : 1. Wapi est un protocole de transmission dans un réseau local sans fil. 2. Cette technologie peut éviter les problèmes de communication à bande étroite et permettre une meilleure communication. 3. Un seul code est nécessaire pour transmettre le signal.

En 2023, la technologie de l’IA est devenue un sujet brûlant et a un impact énorme sur diverses industries, notamment dans le domaine de la programmation. Les gens sont de plus en plus conscients de l’importance de la technologie de l’IA, et la communauté Spring ne fait pas exception. Avec l’évolution continue de la technologie GenAI (Intelligence Artificielle Générale), il est devenu crucial et urgent de simplifier la création d’applications dotées de fonctions d’IA. Dans ce contexte, « SpringAI » a émergé, visant à simplifier le processus de développement d'applications fonctionnelles d'IA, en le rendant simple et intuitif et en évitant une complexité inutile. Grâce à « SpringAI », les développeurs peuvent plus facilement créer des applications dotées de fonctions d'IA, ce qui les rend plus faciles à utiliser et à exploiter.

En tant que leader du secteur, Spring+AI fournit des solutions de pointe pour divers secteurs grâce à son API puissante et flexible et ses fonctions avancées. Dans cette rubrique, nous examinerons les exemples d'application de Spring+AI dans divers domaines. Chaque cas montrera comment Spring+AI répond à des besoins spécifiques, atteint ses objectifs et étend ces LEÇONS APPRISES à une gamme plus large d'applications. J'espère que ce sujet pourra vous inciter à comprendre et à utiliser plus profondément les possibilités infinies de Spring+AI. Le framework Spring a une histoire de plus de 20 ans dans le domaine du développement logiciel, et cela fait 10 ans que la version Spring Boot 1.0 est sortie. Maintenant, personne ne peut contester ce printemps

Pubg, également connu sous le nom de PlayerUnknown's Battlegrounds, est un jeu de tir Battle Royale très classique qui a attiré beaucoup de joueurs depuis sa popularité en 2016. Après le récent lancement du système win11, de nombreux joueurs souhaitent y jouer sur win11. Suivons l'éditeur pour voir si win11 peut jouer à pubg. Win11 peut-il jouer à Pubg ? Réponse : Win11 peut jouer à Pubg. 1. Lorsque Win11 a été lancé pour la première fois, de nombreux joueurs ont été bannis de Pubg car Win11 devait activer TPM. 2. Cependant, sur la base des commentaires des joueurs, Blue Hole a résolu ce problème et vous pouvez désormais jouer à Pubg normalement dans Win11. 3. Si vous rencontrez un pub

Comment implémenter les transactions programmatiques Spring : 1. Utilisez TransactionTemplate ; 2. Utilisez TransactionCallback et TransactionCallbackWithoutResult ; 3. Utilisez les annotations Transactional ; 4. Utilisez TransactionTemplate en combinaison avec @Transactional ;

Comment définir le niveau d'isolement des transactions dans Spring : 1. Utilisez l'annotation @Transactional ; 2. Définissez-le dans le fichier de configuration Spring ; 3. Utilisez PlatformTransactionManager ; Introduction détaillée : 1. Utilisez l'annotation @Transactional, ajoutez l'annotation @Transactional à la classe ou à la méthode qui nécessite la gestion des transactions et définissez le niveau d'isolement dans l'attribut 2. Dans le fichier de configuration Spring, etc.

Après la mise à jour vers la dernière version de Win11, de nombreux utilisateurs constatent que le son de leur système a légèrement changé, mais ils ne savent pas comment le régler. Aujourd'hui, ce site vous présente une introduction à la dernière méthode de réglage du son Win11 pour votre ordinateur. Ce n'est pas difficile à utiliser. Et les choix sont variés, venez les télécharger et les essayer. Comment régler le son du dernier système informatique Windows 11 1. Tout d'abord, cliquez avec le bouton droit sur l'icône du son dans le coin inférieur droit du bureau et sélectionnez « Paramètres de lecture ». 2. Entrez ensuite les paramètres et cliquez sur « Haut-parleur » dans la barre de lecture. 3. Cliquez ensuite sur « Propriétés » en bas à droite. 4. Cliquez sur la barre d'options "Améliorer" dans les propriétés. 5. A ce moment, si le √ devant « Désactiver tous les effets sonores » est coché, annulez-le. 6. Après cela, vous pouvez sélectionner les effets sonores ci-dessous à définir et cliquer sur

PyCharm est un puissant environnement de développement intégré Python doté de fonctions et d'outils riches qui peuvent considérablement améliorer l'efficacité du développement. Parmi elles, la fonction de remplacement est l'une des fonctions fréquemment utilisées dans le processus de développement, qui peut aider les développeurs à modifier rapidement le code et à améliorer la qualité du code. Cet article présentera en détail la fonction de remplacement de PyCharm, combinée à des exemples de code spécifiques, pour aider les novices à mieux maîtriser et utiliser cette fonction. Introduction à la fonction de remplacement La fonction de remplacement de PyCharm peut aider les développeurs à remplacer rapidement le texte spécifié dans le code
