Cet article présente principalement en détail le matériel d'apprentissage de Filter, Servlet et Listener. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à
Matériel d'apprentissage de Filter, Servlet et Listener, j'espère que vous. j'aime
1. Fonction de filtre
La fonction de filtre permet aux utilisateurs de modifier une requête et de modifier une réponse. Le filtre n'est pas un servlet, il ne peut pas générer. une réponse, il peut prétraiter une requête avant qu'elle n'atteigne le servlet, et il peut également traiter la réponse en quittant le servlet. En d'autres termes, le filtre est en fait un "chaînage de servlets" (chaîne de servlets).
Un filtre comprend :
1), intercepter avant l'appel du servlet
2), vérifier la demande du servlet avant l'appel du servlet
3), en fonction du besoin ; pour modifier l'en-tête de la requête et les données de la requête ;
4), modifier l'en-tête de la réponse et les données de la réponse si nécessaire
5), intercepter le servlet après son appel
Le serveur. appelle uniquement à chaque fois La méthode setFilterConfig prépare le filtre pour le traitement une fois ; la méthode doFilter est appelée plusieurs fois pour gérer différentes requêtes. L'interface FilterConfig dispose de méthodes pour trouver le nom du filtre et les informations sur les paramètres d'initialisation. Le serveur peut définir FilterConfig sur vide pour l'indiquer. que le filtre est terminé.
Chaque filtre obtient la requête et la réponse actuelles de la méthode doFilter(). Dans cette méthode, toute opération sur la requête et la réponse peut être effectuée (y compris la collecte de données, l'empaquetage des données, etc.). () donne le contrôle au filtre suivant. Un filtre se termine par la méthode doFilter(). Si un filtre veut arrêter le traitement de la requête et prendre le contrôle complet de la réponse, il n'a pas besoin d'appeler le filtre suivant
Exemple :
Créez d'abord un nouveau filtre
/** * */ package com.ee.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * @author Administrator * */ public class LogFilter implements Filter { private FilterConfig filterConfig; public FilterConfig getFilterConfig() { System.err.println("...getFilterConfig..."); return filterConfig; } public void setFilterConfig(FilterConfig filterConfig) { System.err.println("...setFilterConfig..."); this.filterConfig = filterConfig; } /* (non-Javadoc) * @see javax.servlet.Filter#destroy() */ @Override public void destroy() { System.err.println("...filter destroy..."); } /* (non-Javadoc) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.err.println("...doFilter..."); chain.doFilter(request, response);//看到这没,这只要是传递下一个Filter } /* (non-Javadoc) * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ @Override public void init(FilterConfig filterConfig) throws ServletException { System.err.println("...init Filter..."); this.filterConfig = filterConfig; } }
Configurez-le dans web.xml
<filter> <filter-name>LogFilter</filter-name> <filter-class>com.ee.filter.LogFilter</filter-class> </filter> <filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Démarrer et exécuter
Vous pouvez voir...init Filter... est imprimé pour la première fois au démarrage de TOMCAT, puis vous pouvez voir...doFilter... .is imprimé.
2. Fonction servlet
1). Qu'est-ce qu'une servlet ?
Servlet est un programme Java qui utilise l'interface de programmation d'application (API) Java Servlet et les classes et méthodes associées. En plus de l'API Java Servlet, les servlets peuvent également utiliser des packages de classes Java qui étendent et complètent l'API. Les servlets s'exécutent sur un serveur Web ou un serveur d'applications compatible Java et étendent les capacités de ce serveur. Les servlets Java sont aux serveurs Web ce que les applets Java sont aux navigateurs Web. Les servlets sont chargés dans le serveur Web et exécutés dans le serveur Web, tandis que les applets sont chargés dans le navigateur Web et exécutés dans le navigateur Web. L'API Java Servlet définit une interface standard entre un servlet et un serveur compatible Java, ce qui fait des servlets une plate-forme multi-serveurs.
Les servlets étendent les capacités d'un serveur en créant un cadre pour fournir des services de requête et de réponse sur le Web. Lorsqu'un client envoie une requête au serveur, le serveur peut envoyer les informations de requête au servlet et laisser le servlet créer la réponse que le serveur renvoie au client. Les servlets peuvent être chargés automatiquement au démarrage d'un serveur Web ou lorsqu'un client demande un service pour la première fois. Après le chargement, le servlet continue de s'exécuter jusqu'à ce que d'autres clients fassent des demandes. Les servlets ont un large éventail de fonctions. Par exemple, Servlet peut remplir les fonctions suivantes :
(1) Créer et renvoyer une page HTML complète contenant du contenu dynamique en fonction de la nature de la demande du client.
(2) Créez une partie d'une page HTML (fragment HTML) qui peut être intégrée dans une page HTML existante.
(3) Communiquez avec d'autres ressources du serveur (y compris les bases de données et les applications basées sur Java).
(4) Utilisez plusieurs clients pour gérer les connexions, recevoir les entrées de plusieurs clients et diffuser les résultats à plusieurs clients. Par exemple, une servlet pourrait être un serveur de jeu multi-participant.
(5) Lorsque la transmission de données en mode connexion unique est autorisée, ouvrez une nouvelle connexion du serveur vers l'applet du navigateur et maintenez la connexion
ouverte. Les applets peuvent également initier des connexions entre le navigateur du client et le serveur, permettant au client et au serveur d'effectuer des sessions de manière simple et efficace. La communication peut se faire via des protocoles personnalisés ou des normes telles que IIOP.
(6) Utilisez les données de filtrage de type MIME pour des traitements spéciaux, tels que la conversion d'images et les inclusions côté serveur (SSI).
(7) Une routine standard qui fournit un traitement personnalisé à tous les serveurs. Par exemple, une servlet peut modifier la manière dont les utilisateurs sont authentifiés.
2). Le cycle de vie d'un Servlet
Le cycle de vie d'un Servlet commence lorsqu'il est chargé dans la mémoire du serveur Web et se termine lorsque le Servlet est terminé ou rechargé.
(1) Initialisation
Chargez le Servlet aux moments suivants :
Si l'option de chargement automatique a été configurée, elle sera automatiquement chargée au démarrage du serveur
Après le serveur démarre, lorsque le client fait une requête au servlet pour la première fois
Lors du rechargement du servlet Après avoir chargé le servlet, le serveur crée une instance du servlet et appelle la méthode init() du servlet. Pendant la phase d'initialisation, les paramètres d'initialisation du servlet sont transmis à l'objet de configuration du servlet.
(2) Traitement des requêtes
Pour une requête client arrivant au serveur, le serveur crée un objet "requête" et un objet "réponse" spécifique à la requête. Le serveur appelle la méthode service() du servlet, qui permet de transmettre les objets « requête » et « réponse ». La méthode service() obtient les informations de demande de l'objet "request", traite la demande et utilise les méthodes de l'objet "response" pour renvoyer la réponse au client. La méthode service() peut appeler d'autres méthodes pour gérer la requête, telles que doGet(), doPost() ou d'autres méthodes.
(3) Résiliation
Lorsque le serveur n'a plus besoin du Servlet, ou recharge une nouvelle instance du Servlet, le serveur appellera la méthode destroy() du Servlet.
3) API Java Servlet
L'outil de développement de servlets Java (JSDK) fournit plusieurs packages logiciels nécessaires lors de l'écriture de servlets. Ceux-ci incluent deux packages de base pour tous les servlets : javax.servlet et javax.servlet.http. Les outils de développement Java Servlet peuvent être téléchargés à partir du site Web de Sun. Ce qui suit présente principalement l'interface de programmation d'application HTTP Servlet fournie par javax.servlet.http.
HTTP Servlet utilise un formulaire HTML pour envoyer et recevoir des données. Pour créer un servlet HTTP, étendez la classe HttpServlet, qui est une sous-classe de GenericServlet qui utilise des méthodes spécialisées pour gérer les tableaux HTML. Les formulaires HTML sont définis par les balises