1. Introducción a los nodos de configuración web.xml
(1) context-param
Definición de formato
<cuette-param> <amamname> contextConfiglocation </amamname> <amam-value> classpath: spring/spring-mybatis.xml </amam-value> </text-param>
efecto:
- Este elemento se utiliza para declarar parámetros de inicialización de contexto dentro del alcance de la aplicación (todo el proyecto web).
- Param-name Establece el nombre del parámetro del contexto. Debe ser un nombre único
- Param-Value Establece el valor del nombre del parámetro, el ejemplo aquí es especificar la ubicación del archivo de configuración de Spring.
(2) oyente
Definición de formato
// Listen-Class Especifica la clase de escucha, que hereda ServletContextListener. Contiene el método de inicialización ContextInitialized (evento de servletContextEvent) y el método Destroy Contextyeded (ServletContextEvent Event) <Oyerer> <Oyerer-class> org.springframework.web.context.contextloaderListener </ oying-class> </oyeyer>
Función: este elemento se utiliza para registrar una clase de oyente. Puede recibir notificaciones sobre cuándo ocurre un evento y qué usar como respuesta. Los oyentes de eventos son notificados al establecer, modificar y eliminar sesiones o entornos de servlet. A menudo utilizado junto con el contexto-param.
(3) Filtrar
Definición de formato
<Sterry> <Sterry-Name> CaracterSencodingFilter </filter-Name> <Slasts-Class> org.springframework.web.filter.CharacterIncodingFilter </filter-class> <Init-param> <amamname> Encoding </param-name> <amam-Value> Utf-8 </marr-value> </init-param> </filtro> <filter-name> caracteresCodingFilter </filter-name> <url-pattern>/*</sl-Pattern> </filter-mapping>
Función: Se utiliza para especificar un filtro para el contenedor web. El filtro puede preprocesar las solicitudes de los usuarios antes de que una solicitud llegue al servlet o procese las respuestas HTTP al salir del servlet; Antes de ejecutar el servlet, primero ejecute el programa de filtro y haga un trabajo de preprocesamiento para él; Modifique la solicitud y la respuesta de acuerdo con las necesidades del programa; Interceptar la ejecución del servlet después de que se llama al servlet.
(4) Servlet
- Definición de formato
// Configure Spring MVC y especifique el servlet para procesar la solicitud. Hay dos formas de: // 1. La dirección predeterminada del archivo de configuración de MVC es: /webinf/$ =servletname}-servlet.xml//2. Puede modificar la ubicación del archivo de configuración de MVC a través de la configuración. Debe especificar la ubicación del archivo de configuración de MVC al configurar el desplazamiento del servidor. // El segundo método se usa aquí <!-SpringMVC Core Controller-> <servlet> <Servlet-name> DispatchServlet </servlet-name> <ervlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <init-param> <amamname> contextciglocation </amamamname> <Amam-Value> classpath: spring/springmvc.xml </param-value> </ init-param> <load-on-startup> 1 </load-on-startup> </servlet> <ervlet-mapping> <ervlet-name> stattservlet </servlet-name> <url-pattern>*. shtml </s url-pattern> </servlet-mapping>
efecto:
- Cree y devuelva una página HTML completa que contenga contenido dinámico basado en la naturaleza de la solicitud del cliente;
- Cree una parte de las páginas HTML (fragmentos HTML) que se pueden incrustar en una página HTML existente;
- Leer datos ocultos enviados por el cliente;
- Lea los datos de visualización enviados por el cliente;
- Comunicación con otros recursos del servidor (incluidas bases de datos y aplicaciones Java);
2. Proceso de carga web.xml (pasos):
- Al comenzar un proyecto web, el contenedor (como Tomcat y Apache) leerá dos nodos en su archivo de configuración Web.xml, context-param y oyente.
- Inmediatamente después, el contenedor creará un ServletContext (también conocido como contexto de servlet), que puede ser utilizado por todo el proyecto web dentro del alcance de la aplicación.
- El contenedor convierte <context-param> en pares de valor clave y lo entrega a servletcontext.
- El contenedor crea una instancia de clase en <Oyerer>, es decir, crea un oyente. (Nota: la clase definida por el oyente puede ser una clase personalizada pero debe heredar el ServletContextListener).
- Habrá un método de inicialización contextinicializado (servletContextEvent args) en el método de escucha. En este método, obtenemos: servletContext = servletContextEvent.getServletContext (); El valor de context-param = servletContext.getInitParameter ("Key-Param Key"); En esta clase, también debe haber un método de destrucción con contexto (evento servletContextEvent). Se utiliza para liberar recursos antes de cerrar la aplicación, como cerrar la conexión de la base de datos.
- Después de obtener el valor de este param de contexto, puede hacer algunas operaciones. Tenga en cuenta que su proyecto web no se ha iniciado completamente en este momento. Esta acción será anterior a todos los servlets. En otras palabras, en este momento, las operaciones que realiza con los valores clave en <COTELTEPARAM> se ejecutarán antes de que su proyecto web se inicie por completo.
- Por ejemplo. Es posible que desee abrir la base de datos antes de que comience el proyecto. Luego, aquí puede establecer el método de conexión de la base de datos en <cuette-param> e inicializar la conexión de la base de datos en la clase de escucha.
Conocimiento complementario: ServletContext es un espacio global para almacenar información. Cuando se inicia el servidor, existe. Cuando el servidor está cerrado, se libera. Solicitud, un usuario puede tener múltiples sesiones, un usuario y ServletContext, todos los usuarios comparten una. Por lo tanto, para ahorrar espacio y mejorar la eficiencia, en ServletContext, es seguro colocar hilos necesarios e importantes que todos los usuarios necesitan compartir. Por ejemplo, en un sitio web de compras, los usuarios desean acceder a la información detallada de los productos. Si se coloca en el dominio de la sesión, cada usuario debe acceder a la base de datos, que es demasiado ineficiente; Y en un ServletContext, una vez que se inicia el servidor, accede a la base de datos y coloca la información del producto en la base de datos, para que todos los usuarios puedan acceder a la información del producto a través del contexto.
3. Orden de carga de nodo web.xml:
- El orden de carga de los nodos Web.xml no tiene nada que ver con el orden de su posición en Web.xml, es decir, <filtre> no se cargará primero solo porque <filter> está escrito antes de <text-param>.
- Como se mencionó anteriormente, <context-param> se utiliza para proporcionar pares de valor clave a servletcontext, es decir, información de contexto de la aplicación. El oyente, el servlet y otros nodos utilizarán esta información de contexto durante el proceso de inicialización, por lo que finalmente concluimos que el orden de carga del nodo web.xml debería ser: context-param-> oyente-> filtro-> servlet.
- Para un cierto tipo de nodo de configuración, se requiere la secuencia de posición. Tome servlet como ejemplo. El nodo de configuración relacionado con servlet es el mapeo de servlet. Para servlets y mapeo de servlet con el mismo nombre de servlet de sección de configuración, el mapeo de servlet debe definirse después del servlet. De lo contrario, al analizar el mapeo de servlet, su nombre de servlet aún no se ha definido. Cuando cada servlet se inicializa al inicio del contenedor web, se inicializa en el orden en que aparece la sección de configuración del servlet.
- Conclusión final: El orden de carga de Web.xml es: [context -param -> oyente -> filtro -> servlet -> spring], y el orden de las llamadas de programa reales entre nodos del mismo tipo se llama de acuerdo con el orden de mapeo correspondiente.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.