1. Dans l'application de printemps, nous avons deux utilisations du filtrage, l'une est un intercepteur et l'autre est bien sûr un filtre. Nous présenterons l'utilisation des filtres à Springboot ici. L'utilisation des filtres dans SpringMVC est fondamentalement la même, mais il y a une petite différence de configuration.
2. La fonction de filtre permet aux utilisateurs de modifier une demande et de modifier une réponse. Le filtre n'est pas un servlet, il ne peut pas générer de réponse. Il peut prétraiter la demande avant qu'une demande n'atteigne le servlet, ou il peut gérer la réponse lors de la sortie du servlet. En d'autres termes, le filtre est en fait un «chaînage de servlet» (chaîne de servlet).
Un filtre comprend:
1) Intercepter avant que le servlet ne soit appelé;
2) Vérifiez la demande de servlet avant que le servlet ne soit appelé;
3) Modifier l'en-tête de demande et les données de demande au besoin;
4) Modifier l'en-tête de réponse et les données de réponse au besoin;
5) intercepté après l'appel du servlet.
1. Scénarios d'application du filtre
Grâce à la compréhension des filtres de filtre, nous pouvons savoir que certains traitements peuvent être effectués dans les trois situations suivantes:
1> Décidez si la ressource cible doit être accessible en contrôlant l'appel à la méthode chaîne.Dofilter.
Par exemple, vous pouvez vérifier dans les autorisations de l'utilisateur, etc. Déterminez si l'utilisateur a la permission d'accéder à certaines ressources, a la permission de libérer et n'exécute pas la méthode chaîne.ofilter sans autorisation.
2> Certaines objectifs sont atteints en effectuant un certain traitement avant d'appeler la méthode Chain.Dofilter.
Par exemple, résolvez le problème du code brouillé chinois, etc. Avant la méthode Dofilter, le codage de l'encodage et de la réponse de la demande de réglage peut être effectué. Vous pouvez même encapsuler et décorer l'interface de demande pour gérer le problème chinois brouillé de la méthode de la demande de GET (réécrivez la méthode de requête correspondante.getParameter).
3> Certaines objectifs sont atteints en effectuant un certain traitement après avoir appelé la méthode Chain.Dofilter.
Par exemple, compressez l'ensemble du site Web. Avant d'appeler la méthode chaîne.Dofilter, encapsulez et décorez l'objet de réponse avec la classe A, remplacez GetOutputStream et remplacez la méthode GetWriter. À l'intérieur de la classe A, le contenu de sortie est mis en cache dans le flux bytearrayoutputStream, puis après l'exécution de la méthode Chain.Dofilter, les données de cache de flux ByteArrayOutStream dans la classe A sont obtenues et compressées avec le flux GZIPOutputStream.
2. Le principe de l'interception du filtre
Il existe une méthode Dofilter dans l'interface du filtre. Lorsque le développeur écrit la classe de filtre pour implémenter la méthode DoFilter et configure la ressource Web à intercepter, le serveur Web appellera d'abord la méthode Dofilter du filtre avant d'appeler la méthode de service de la ressource Web (déterminée par le mécanisme d'accès interne du serveur).
3. Règles de filtrage
// Filtrez toutes les ressources de la demande. Tous les fichiers sous la racine de l'application actuelle incluent tous les fichiers sous le sous-répertoire à plusieurs niveaux. Notez que * est précédé par "/" Enregistrement.AddurlPatterns ("/ *"); // Filtrez les ressources de fichiers de type spécifiées, tous les fichiers HTML sous la racine de l'application actuelle. Remarque: il n'y a pas de "/" avant * .html, sinon le registre d'erreur.addurlpatterns (". Html"); // Filtrez tous les fichiers sous le répertoire spécifié. Tous les fichiers sous le sous-répertoire Folder_name (peuvent être un sous-répertoire à plusieurs niveaux) sous la racine de l'application actuelle.addurlPatterns ("/ Folder_name / *"); // Filtrez le fichier spécifié Enregistrement.addurlPatterns ("/ index.html");Iii. Application
@ Composant @ servletcomponentscan @ webfilter (urlpatterns = "/ login / *", filterName = "LoginFilter") classe publique LoginFilter implémente Filter {@Override public void init (filterConfig filterconfig) lance ServletException {} @Override Void Dofilter ServletResponse, filterChain FilterChain) lève IOException, ServletException {} @Override public void destren () {}}4. Explication:
1. Le but de cette annotation @Component est de remettre le fichier de login au conteneur pour le traitement. C'est-à-dire que le liginfilter fonctionne
2. @ServletComponentScan Ceci est utilisé pour scanner @WebFilter pour faire fonctionner @WebFilter. Bien sûr, il est également possible d'expliquer le tube à fil de servlet. Cet @ServletComponentsCan est préférable de désinstaller l'application, la configuration générale. Je n'ai qu'un seul filtre ici, donc je ne l'ai pas écrit sur l'application.
3. @WebFilter est d'une utilité évidente. Quel lien est utilisé pour filtrer et pourquoi est le nom du filtre?
5. Une brève introduction à l'utilisation du filtre à Springmvc
1. La méthode d'écriture est toujours la même. Il hérite du filtre pour implémenter 3 méthodes pour le traiter.
2. Jetez-le dans le conteneur: cela doit être configuré dans web.xml
<filter> <filter-name> LoginFilter </ Filter-Name> <Imter-Class> com.troy.boot.filter.loginfilter </ filter-Class> </ Filter> <Lilter-Mapping> <filter-Name> LoginFilter </ Filter-Name> <Url-Pattern> / * </url-Pattern>
3. Vous pouvez étudier vous-même l'utilisation spécifique.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.