1. Introduction aux nœuds de configuration web.xml
(1) Context-Param
Définition du format
<Touxet-Param> <Am param-name> ContextConfigLocation </ Param-Name> <Amam-Value> CLASSPATH: Spring / Spring-Mybatis.xml </Ar param-Value> </ Context-Param>
effet:
- Cet élément est utilisé pour déclarer des paramètres d'initialisation de contexte dans la portée de l'application (l'ensemble du projet Web).
- Param-Name définit le nom du paramètre du contexte. Doit être un nom unique
- Param-valeur définit la valeur du nom du paramètre, l'exemple ici est de spécifier l'emplacement du fichier de configuration de ressort.
(2) auditeur
Définition du format
// écoute-classe spécifie la classe d'écoute, qui hérite de servletContextListener. Il contient la méthode d'initialisation contexteInitialialialized (ServletContexTevent Event) et la méthode destruct ContextDesToryed (ServletContexTevent) <Deurner> <écouteur-classe> org.springframework.web.context.contextLoaderListener </ auteur-cllass> </ouleur>
Fonction: Cet élément est utilisé pour enregistrer une classe d'écoute. Vous pouvez recevoir des notifications sur le moment où un événement se produit et ce qu'il faut utiliser comme réponse. Les auditeurs d'événements sont informés lors de l'établissement, de la modification et de la suppression de sessions ou des environnements de servlets. Souvent utilisé en conjonction avec le contexte-Param.
(3) filtre
Définition du format
<filter> <filter-name> CharacterEncodingFilter </ Filter-Name> <Imter-Class> org.springFramework.web.filter.CarotteRencodingFilter </ Filter-Class> <Init-Param> <Am paramn-Name> Encoding </ param-name> <param-valeur> utf-8 </ param-Value> </ init-param> </filter> <filtre-mapping> <filter-name> CaracterEncodingFilter </filter-name> <Url-potern> / * </url-potern> </filter-mapping>
Fonction: Utilisé pour spécifier un filtre pour le conteneur Web. Le filtre peut prétraiter les demandes de l'utilisateur avant qu'une demande n'atteigne le servlet ou traite les réponses HTTP lors de la sortie du servlet; Avant d'exécuter le servlet, exécutez d'abord le programme de filtre et effectuez des travaux de prétraitement pour celui-ci; modifier la demande et la réponse en fonction des besoins du programme; Intercepter l'exécution du servlet après l'appel du servlet.
(4) Servlet
- Définition du format
// Configurez Spring MVC et spécifiez le servlet pour traiter la demande. Il existe deux façons de: // 1. L'adresse par défaut du fichier de configuration MVC est: /web-inf/$; Vous pouvez modifier l'emplacement du fichier de configuration MVC via la configuration. Vous devez spécifier l'emplacement du fichier de configuration MVC lors de la configuration de DispatcherServlet. // La deuxième méthode est utilisée ici <! - SpringMvc Core Controller -> <Serplet> <Servlet-Name> DispatchServlet </ Servlet-Name> <Servlet-Class> org.SpringFramework.web.servlet.DispatcherServlet </ Servlet-Class> <Init-Param> <Amled-Name> ContextConfigLocation </ Param-Name> <Am param-Value> CLASSPATH: Spring / Springmvc.xml </ Param-Value> </Init-Param> <Choad-on-Startup> 1 </ Load-on-Startup> </Servlet> <Serplet-Mapping> <Serplet-Name> DispatchServlet </ Servlet-name> <Url-Pattern> *.
effet:
- Créer et renvoyer une page HTML complète contenant du contenu dynamique basé sur la nature de la demande du client;
- Créez une partie des pages HTML (extraits HTML) qui peuvent être intégrées dans une page HTML existante;
- Lire les données cachées envoyées par le client;
- Lisez les données d'affichage envoyées par le client;
- Communication avec d'autres ressources du serveur (y compris les bases de données et les applications Java);
2. Processus de chargement Web.xml (étapes):
- Lors du démarrage d'un projet Web, le conteneur (comme Tomcat et Apache) lira deux nœuds dans son fichier de configuration web.xml, context-param et écouteur.
- Immédiatement après, le conteneur créera un ServletContext (également connu sous le nom de Servlet Context), qui peut être utilisé par l'ensemble du projet Web dans la portée de l'application.
- Le conteneur convertit <Touxt-Param> en paires de valeurs clés et le remet à ServletContext.
- Le conteneur crée une instance de classe dans <Lainerner>, c'est-à-dire crée un écouteur. (Remarque: la classe définie par l'auditeur peut être une classe personnalisée mais doit hériter du servletContextListener).
- Il y aura une méthode d'initialisation contextintialisée (servletContexTevent Args) dans la méthode d'écoute. Dans cette méthode, nous obtenons: servletContext = servletContexTevent.getServletContext (); la valeur de context-param = servletContext.getInitParameter ("Key of Context-Param"); Il doit également y avoir une méthode ContextDestRoyed (ServletContextevent) de la méthode dans cette classe. Utilisé pour publier des ressources avant de clôturer l'application, telles que la fermeture de la connexion de la base de données.
- Après avoir obtenu la valeur de ce contexte-Param, vous pouvez faire des opérations. Notez que votre projet Web n'a pas été entièrement démarré pour le moment. Cette action sera plus tôt que tous les servlets. En d'autres termes, pour le moment, les opérations que vous effectuez avec les valeurs clés de <context-param> seront exécutées avant le démarrage de votre projet Web.
- Par exemple. Vous voudrez peut-être ouvrir la base de données avant le début du projet. Ensuite, ici, vous pouvez définir la méthode de connexion de la base de données dans <ftext-Param> et initialiser la connexion de la base de données dans la classe d'écoute.
Connaissances supplémentaires: ServletContext est un espace global pour stocker des informations. Lorsque le serveur démarre, il existe. Lorsque le serveur est fermé, il est libéré. Demande, un utilisateur peut avoir plusieurs sessions, un utilisateur et ServletContext, tous les utilisateurs en partagent un. Par conséquent, afin d'économiser de l'espace et d'améliorer l'efficacité, dans ServletContext, il est sûr de placer des threads importants nécessaires que tous les utilisateurs doivent partager. Par exemple, dans un site Web d'achat, les utilisateurs souhaitent accéder aux informations détaillées des produits. S'il est placé dans le domaine de session, chaque utilisateur doit accéder à la base de données, ce qui est trop inefficace; Et dans un servletContext, une fois le serveur démontr, il accède à la base de données et met les informations du produit dans la base de données, afin que tous les utilisateurs puissent accéder aux informations du produit via le contexte.
3. Ordre de chargement de nœud Web.xml:
- L'ordre de chargement des nœuds web.xml n'a rien à voir avec l'ordre de leur position dans web.xml, c'est-à-dire que le <filter> ne sera pas chargé d'abord simplement parce que <filter> est écrit avant <ftext-param>.
- Comme mentionné ci-dessus, <ftext-param> est utilisé pour fournir des paires de valeurs clés à ServletContext, c'est-à-dire des informations contextuelles de l'application. L'auditeur, le servlet et d'autres nœuds utiliseront ces informations de contexte pendant le processus d'initialisation, nous avons donc finalement conclu que l'ordre de chargement du nœud web.xml devrait être: context-Param-> écouteur-> filter-> servlet.
- Pour un certain type de nœud de configuration, la séquence de position est requise. Prenez le servlet à titre d'exemple. Le nœud de configuration lié au servlet est la cartographie du servlet. Pour les servlets et la cartographie des servlet avec la même section de configuration-nom de servlet, le mappage des servlet doit être défini après le servlet. Sinon, lors de l'analyse de la cartographie du servlet, son nom de servlet n'a pas encore été défini. Lorsque chaque servlet est initialisé au début du conteneur Web, il est initialisé dans l'ordre dans lequel la section de configuration du servlet apparaît.
- Conclusion finale: l'ordre de chargement de web.xml est: [context-param -> écouteur -> filtre -> servlet -> printemps], et l'ordre des appels de programme réels entre les nœuds du même type est appelé selon l'ordre de mappage correspondant.
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.