Différences et connexions entre les servlets, les filtres, les auditeurs, les intercepteurs
1. Concept
1.Servlet: Servlet est une application Java exécutant le côté du serveur, avec des fonctionnalités de plate-forme et de protocole indépendantes, et peut générer dynamiquement des pages Web, qui fonctionnent dans la couche moyenne entre les demandes du client et les réponses du serveur.
2.Filtre: Le filtre est un extrait de code réutilisable qui peut être utilisé pour convertir les demandes HTTP, les réponses et les informations d'en-tête. Le filtre n'est pas comme un servlet. Il ne peut pas générer de demande ou de réponse. Il modifie simplement une demande à une certaine ressource ou modifie une réponse d'une certaine ressource.
3. Écouteur: Écouteur, littéralement, on peut voir que l'auditeur est principalement utilisé pour écouter uniquement. Grâce à l'auditeur, vous pouvez écouter une action d'exécution dans un serveur Web et faire des réponses correspondantes en fonction de ses exigences.
En termes simples, c'est un composant fonctionnel qui exécute automatiquement le code lorsque les trois objets d'application, de session et de la demande sont créés ou lorsque les attributs de modification et de suppression y sont ajoutés.
4.Interceptor: il s'agit de programmation dans l'orientation tangentielle, qui est d'appeler une méthode avant votre service ou une méthode, ou d'appeler une méthode après la méthode.
Par exemple, Dynamic Proxy est une simple implémentation d'un intercepteur. Vous pouvez imprimer une chaîne avant d'appeler la méthode (ou effectuer d'autres opérations de logique métier), vous pouvez également imprimer une chaîne après avoir appelé la méthode, ou même effectuer des opérations de logique métier lorsque vous lancez une exception.
5. Servlet, filtre, écouteur sont configurés dans web.xml, l'interceptor n'est pas configuré dans web.xml, Struts Interceptor est configuré en struts.xml. L'intercepteur de Spring est configuré dans Spring.xml.
2. Ordre de chargement
L'ordre de chargement de web.xml est: Context-Param -> Écouteur -> Filtre -> Servlet
3. Responsabilités
1.Servlet:
(1) Créer et renvoyer une page HTML complète contenant du contenu dynamique basé sur la nature de la demande du client
(2) Créez une partie de la page HTML (fragment HTML) qui peut être intégrée dans une page HTML existante
(3) Lire les données cachées envoyées par le client
(4) Lisez les données d'affichage envoyées par le client
(5) Communiquez avec d'autres ressources du serveur (y compris les applications de base de données et Java)
(6) Envoyez des données cachées au client via le code d'état et l'en-tête de réponse.
2.Filtre:
(1) Le filtre peut prétraiter les demandes des utilisateurs avant qu'une demande n'atteigne le servlet, ou peut également traiter les réponses HTTP lors de la sortie du servlet
(2) Avant d'exécuter le servlet, exécutez d'abord le programme de filtre et effectuez des travaux de prétraitement pour cela.
(3) modifier la demande et la réponse en fonction des besoins du programme
(4) Intercepter l'exécution du servlet après l'appel du servlet.
3.Listener:
8 Les interfaces de l'auditeur sont fournies dans la spécification Servlet2.4, qui peut être divisée en trois catégories, comme suit:
(1) Interface Listne R liée à ServletContext. Y compris: ServletContextListener, servletContextAttributeListener
(2) Interface listner liée à HttpSession. Y compris: httpSessionListner, httpSessionAttributeListener, httpSessionBindingListener, httSessionActivationListener
(3) Interfaces de l'auditeur liées à ServLetRequest, notamment: ServletRequestListner, ServletRequestAttraTributleListener
4. Différence
1.Servlet: Le processus de servlet est court. Une fois l'URL transmis, il est traité puis retourné ou tourné vers une page spécifiée par vous. Il est principalement utilisé pour contrôler avant le traitement commercial.
2.Filtre: le processus est fileté. Une fois l'URL transmis, après vérification, le processus d'origine peut être maintenu vers le bas et reçu par le filtre, servlet, etc. suivant, et après le traitement du servlet, il ne continuera pas d'être transmis à la baisse.
La fonction de filtre peut être utilisée pour maintenir le processus de la manière d'origine ou pour dominer le processus, tandis que la fonction de servlet est principalement utilisée pour dominer le processus. Le filtre peut être considéré comme un complément du servlet (essuie-volonté).
Le filtre peut être considéré comme une "variante" du servlet. Il est principalement utilisé pour prétraiter les demandes des utilisateurs et peut également post-processus httpservletResponse. Il s'agit d'une chaîne de traitement typique.
La différence entre l'informatique et le servlet est qu'elle ne peut pas générer une réponse directement à l'utilisateur.
Le processus complet est: Filtrez les demandes de prétraitements des prétraitements, puis remettent les demandes au servlet pour le traitement et génère une réponse, et enfin filtrer après la réponse du serveur.
3. Règles de correspondance
Lorsqu'une demande est envoyée au conteneur servlet, le conteneur soustrait d'abord l'URL demandée sur le chemin de contexte de l'application actuel en tant que URL de mappage du servlet. Par exemple, je visite http: //localhost/test/aaa.html (mon contexte d'application est test).
Le conteneur supprimera http: // localhost / tes et utilisera la pièce /aaa.html restante pour correspondre à la cartographie du servlet, c'est-à-dire utiliser la pièce restante pour correspondre au modèle d'URL du servlet configuré dans web.xml.
Remarque: il existe certaines règles pour ce processus de correspondance de cartographie, et chaque match ne correspondra finalement qu'un seul servlet. (C'est différent du filtre)
Règles de correspondance du servlet: Lorsqu'un servlet correspond avec succès, il ne sera pas apparié plus loin
Correspondance précise du chemin:
Exemple: Par exemple, le schéma d'URL de Servleta est / test, et le schéma d'URL de ServletB est / *. À l'heure
À l'heure actuelle, le conteneur effectuera d'abord une correspondance précise de chemin et constatera que / le test est exactement apparié par Servleta, alors appelez Servleta et ne prêtera pas attention aux autres servlets.
Correspondance du plus long chemin:
Exemple: le schéma d'URL de la servleta est / test / *, et le modèle d'URL de servletB est / test / a / *. Lorsque vous accédez à http: // localhost / test / a,
Le conteneur sélectionnera le servlet avec le chemin le plus long pour correspondre, qui est le servletB ici.
Portie à l'extension: Si le dernier segment de l'URL contient une extension, le conteneur sélectionnera le servlet approprié en fonction de l'extension.
Exemple: Url-Pattern of Servleta: * .Action
4. Les servlets et les filtres sont tous destinés aux URL et ainsi de suite, tandis que les auditeurs sont destinés aux objets, tels que la création de sessions et la survenue de session.setAttribute, et font quelque chose lorsque de tels événements se produisent.
Peut être utilisé pour: Spring intègre des jambes de force, des attributs d'injecte dans l'action de Struts, implémente les tâches de synchronisation des applications Web, les statistiques sur le nombre d'utilisateurs en ligne, etc.
5. Interceptor Interceptor, similaire au filtre, mais est configuré dans struts.xml, non dans web.xml, et non pour les URL, mais pour l'action. Lorsque la page soumet une action,
La réalisation des opérations de filtrage est équivalente au mécanisme de plug-in fourni par Struts1.x. Il peut être considéré comme le premier est le filtre fourni par Struts1.x, et l'intercepteur est le filtre fourni par Struts2.
Différences par rapport au filtre:
(1) il n'est pas configuré dans web.xml, mais est configuré dans struts.xml, et est avec l'action (2) l'action elle-même peut spécifier quel intercepteur utilise pour faire les choses avant de la recevoir
6. La différence et la connexion entre les filtres et les intercepteurs dans Struts2:
(1) L'intercepteur est fourni par Struts2, tandis que les filtres sont fournis par Standard Standard
(2) L'intercepteur intercepte la méthode cible de l'action cible, tandis que les filtres ciblent diverses ressources Web
(3) L'intercepteur est configuré dans struts.xml, tandis que le filtre est configuré dans le fichier web.xml
(4) Les intercepteurs sont organisés ensemble à l'aide d'une pile d'intercepteur, tandis que les filtres sont liés entre eux selon les ressources interceptées. L'ordre d'exécution est déterminé par leur position dans le fichier de configuration.
(5) Les intercepteurs sont basés sur le mécanisme de réflexion Java, tandis que les filtres sont basés sur des rappels de fonction.
(6) Les filtres dépendent des conteneurs de servlet, tandis que les intercepteurs ne dépendent pas des conteneurs de servlet.
(7) Les intercepteurs ne peuvent travailler que sur les demandes d'action, tandis que les filtres peuvent travailler sur presque toutes les demandes.
(8) L'intercepteur peut accéder aux objets dans le contexte d'action et la pile de valeur, mais le filtre ne peut pas.
(9) Pendant le cycle de vie de l'action, l'intercepteur peut être appelé plusieurs fois, tandis que le filtre ne peut être appelé qu'une seule fois lorsque le conteneur est initialisé.
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!