Le filtre est un extrait de code réutilisable qui peut être utilisé pour convertir les demandes, les réponses et les informations d'en-tête HTTP. 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.
Récemment, lors de l'utilisation de scripts, j'ai utilisé des cookies pour identifier l'ordinateur, ajouter le filtrage et les servlets et filtres soigneusement étudiés. La principale différence est:
Le cycle de vie d'un filtre passe généralement par les trois étapes suivantes:
Les caractéristiques des servlets sont:
initialisation
La méthode init () est appelée lorsque le conteneur charge d'abord le filtre. Cette classe contient une référence à l'objet Filter Config dans cette méthode. Nos filtres n'ont pas réellement besoin de le faire, car aucune information d'initialisation n'est utilisée, et ici c'est juste à des fins de démonstration.
filtre
La plupart du temps du filtre est consommé ici. La méthode Dofilter est appelée par le conteneur et les références à la demande de servlet, la réponse du servlet et les objets de chaîne de filtre dans la chaîne de demande / réponse sont passées en même temps. Le filtre a ensuite la possibilité de traiter la demande, de passer la tâche de traitement à la ressource suivante dans la chaîne (en appelant la méthode Dofilter sur la référence de l'objet de la chaîne de filtre), puis traitez la réponse lorsque le contrôle de traitement revient au filtre.
Destruction
Le conteneur appelle la méthode Detrère () immédiatement avant la collecte des ordures pour pouvoir exécuter tout code de nettoyage requis.
Concernant Chain.Dofilter (demande, réponse), sa fonction est de transmettre la demande à l'objet suivant sur la chaîne de filtre. Le suivant ici fait référence au filtre suivant, s'il n'y a pas de filtre, c'est la ressource que vous avez demandée. Généralement, les filtres sont une seule chaîne, et il n'y a que quelques configurations dans web.xml. Connecté un par un
Demande -> Filter1 -> Filter2 -> Filter3 -> .... -> Resource de demande.
Le filtre est une opération de chaîne, donc lors du traitement d'un seul filtre, vous devez enfin sauter au servlet pour répondre à la demande.
Si vous passez par la chaîne, la méthode Chain.Dofilter (demande, réponse) sautera immédiatement vers le servlet intercepté et reviendra au filtre.Chain est équivalent à une porte, sortez de cette porte puis retournez de cette porte. La méthode pour appeler le filtre est de la configurer dans web.xml, et vous devez configurer un schéma d'URL qui est le même que le servlet que vous devez intercepter.
<! - Configurez un filtre -> <filter> <filter-name> Suibianxie </filter-name> <filter-class> com.etoak.filter.myencoding </ filter-class> <! - Configurez un paramètre privé -> <IniT-PARAM> <AMAM-NAME> MYCODE </ param-name> <param-value> </filter> <! - L'ordre d'interception est lié à l'ordre de mappage -> <filtre-mappage> <filter-name> Suibianxie </filter-name> <! - Notez que cela doit être cohérent avec le sommier URL du servlet à intercepter, ce qui signifie que l'interception de filtre </ </ / url-mappat <! - Configurez le deuxième filtre -> <filter> <filter-name> Suibianxie2 </filter-name> <filter-Class> com.etoak.filter.naming </filter-class> </filter> <filter-mapping> <filter-name> SUIBIANXIE2 </filter-name> <Url-Pattern> / servlet / Test </ Url-Ptern> <VerTlet> <Servlet-Name> Test </ Servlet-Name> <Servlet-Class> com.etoak.servlet.test </ servlet-Class> </ Servlet> <Servlet-Mapping> <Servlet-Name> Test </vrlet-name> <Url-Pattern> / Servlet / Test </url-Pattern> </servlet-mapping>
Ce qui précède est la différence et la connexion entre les servlets et les filtres qui vous sont présentés par l'éditeur. J'espère que ce sera utile à tous!