Maison Java javaDidacticiel Introduction détaillée à l'intercepteur Spring MVC

Introduction détaillée à l'intercepteur Spring MVC

Sep 08, 2017 am 09:43 AM
spring 介绍 intercepter

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);
Copier après la connexion

Exécuter avant de générer la vue


 public void postHandle(HttpServletRequest request,
  HttpServletResponse response, Object handler,
  ModelAndView modelAndView);
Copier après la connexion

Enfin exécuté, peut être utilisé pour libérer des ressources


 public void afterCompletion(HttpServletRequest request,
  HttpServletResponse response, Object handler, Exception ex)
Copier après la connexion

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 {   
  略。。。 
}
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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-->
Copier après la connexion

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Introduction détaillée à ce qu'est le wapi Introduction détaillée à ce qu'est le wapi Jan 07, 2024 pm 09:14 PM

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.

Un nouveau paradigme de programmation, quand Spring Boot rencontre OpenAI Un nouveau paradigme de programmation, quand Spring Boot rencontre OpenAI Feb 01, 2024 pm 09:18 PM

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.

Utilisez Spring Boot et Spring AI pour créer des applications d'intelligence artificielle générative Utilisez Spring Boot et Spring AI pour créer des applications d'intelligence artificielle générative Apr 28, 2024 am 11:46 AM

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

Explication détaillée indiquant si Win11 peut exécuter le jeu PUBG Explication détaillée indiquant si Win11 peut exécuter le jeu PUBG Jan 06, 2024 pm 07:17 PM

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

Quelles sont les méthodes de mise en œuvre des transactions programmatiques Spring ? Quelles sont les méthodes de mise en œuvre des transactions programmatiques Spring ? Jan 08, 2024 am 10:23 AM

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 au printemps Comment définir le niveau d'isolement des transactions au printemps Jan 26, 2024 pm 05:38 PM

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.

Présentation de la dernière méthode de réglage du son Win 11 Présentation de la dernière méthode de réglage du son Win 11 Jan 08, 2024 pm 06:41 PM

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

Guide du débutant PyCharm : analyse complète des fonctions de remplacement Guide du débutant PyCharm : analyse complète des fonctions de remplacement Feb 25, 2024 am 11:15 AM

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

See all articles