Nuevas características de Servlet3.0 del archivo de configuración modular web-fragment.xml

Introducción a la nueva característica de Servlet3.0:

Como miembro del sistema de especificación Java EE 6, Servlet 3.0 se lanzó con la especificación Java EE 6. Esta versión proporciona varias características nuevas basadas en la versión anterior (Servlet 2.5) para simplificar el desarrollo y la implementación de aplicaciones web. La introducción de varias de estas características ha entusiasmado mucho a los desarrolladores, y también ha recibido elogios de la comunidad Java:

  1. Soporte de procesamiento asincrónico: con esta característica, el subproceso Servlet ya no necesita bloquearse todo el tiempo, y luego la respuesta no se puede generar hasta que se complete el procesamiento comercial, y finalmente el subproceso Servlet finaliza. Después de recibir la solicitud, el subproceso Servlet puede delegar la operación que lleva mucho tiempo a otro subproceso para completar y volver al contenedor sin generar una respuesta. En vista del procesamiento comercial que consume mucho tiempo, esto reducirá en gran medida la ocupación de los recursos del servidor y aumentará la velocidad del procesamiento concurrente.
  2. Nueva compatibilidad con anotaciones: esta versión agrega varias anotaciones para simplificar la declaración de Servlet, Filter y Listener, lo que hace que el archivo de descripción de implementación web.xml ya no sea necesario a partir de esta versión. Si
  3. Soporte de capacidad de conexión: los desarrolladores familiarizados con Struts2 seguramente recordarán las características de integración de varios marcos comunes, incluidos Spring a través de complementos. Los complementos correspondientes se empaquetan en paquetes JAR y se colocan en la ruta de clase, y Struts2 puede cargar automáticamente estos complementos durante el tiempo de ejecución. Servlet 3.0 ahora ofrece características similares: los desarrolladores pueden ampliar fácilmente la funcionalidad de las aplicaciones web existentes a través de complementos sin modificar las aplicaciones originales.

Nota: Sobre Servlet3.0 hoy demuestran las nuevas características se centran en el archivo de configuración modular en la web fragment.xml (la experiencia real del proyecto) , en las otras nuevas características pueden hacer referencia a este artículo: Servlet3.0 detallada nuevas características  o Bo Amigos del artículo

 

1. ¿Cuál es la diferencia entre web-fragment.xml y web.xml?

La plantilla de archivo web.xml común es:

<? xml version = "1.0" encoding = "UTF-8" ?> 
< web-app xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://xmlns.jcp .org / xml / ns / javaee " xsi: schemaLocation =" http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd " version =" 3.1 " > 
................ 
</ web-app >

 

La plantilla de archivo web-fragment.xml es:

<? xml version = "1.0" encoding = "UTF-8" ?> 
< web-fragment id = "WebFragment_ID" version = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml /ns/javaee/web-fragment_3_0.xsd " > 

............ 
    
 </ web-fragment >

La primera es que la etiqueta raíz no es la misma. La etiqueta normal del archivo web.xml es <web-app> </ web-app> Esto representa el archivo de configuración del proyecto web Java principal, y la etiqueta raíz del archivo web-fragment.xml es <fragmento web > </ web-fragment>, y web-fragment.xml y web.xml, excepto por la referencia XSD declarada en el encabezado, la configuración principal es exactamente la misma que web.xml, Servlet 3.0 introdujo el " El archivo de descripción de implementación web-fragment.xml del "Fragmento de descriptor de implementación de módulo web" debe almacenarse en el directorio META-INF del archivo JAR. El archivo de descripción de implementación puede contener todo lo que se puede definir en web.xml. El paquete JAR generalmente se coloca en el directorio WEB-INF / lib. Además, todos los recursos utilizados por el módulo, incluidos los archivos de clase y los archivos de configuración, solo necesitan cargarse en la ruta de la cadena del cargador de clases del contenedor, como las clases Directorio etc. Se puede decir que esta nueva característica sigue siendo muy práctica. No necesita poner todas las configuraciones hinchadas en el archivo web.xml. Puede configurar todas las configuraciones iniciales en el archivo web-fragment.xml, como en un proyecto distribuido. El escaneo de paquetes de Spring tendrá las especificaciones correspondientes en algunas compañías, incluso los controladores y servicios requieren que los nombres de paquetes cumplan con las especificaciones, para que podamos extraer un proyecto y cargar el archivo de configuración de Spring de manera uniforme en la web. -fragment.xml para cargar estos archivos de configuración de Spring, de modo que en el trabajo de otros desarrolladores, no necesite configurar la configuración casi repetida de Spring cada vez, consulte directamente el paquete jar correspondiente para completar la configuración, lo que puede mejorar la eficiencia .

Por ejemplo:

 

 ******************************************

 

 De esta manera, después de que otros desarrolladores se refieran al proyecto, puede hacer "0 spring spring" para usar la conveniencia que trae spring.

 

2. El orden de ejecución de web.xml y web-fragment.xml?

* En primer lugar: web.xml es definitivamente el primero en ejecutarse porque web.xml es la entrada al proyecto web

* Se puede configurar el orden de ejecución de múltiples web-fragement.xml. Ejemplos:

Usando el descriptor de despliegue ( el web.xml ) en <absoluta de pedidos> elemento , el orden puede ser proporcionado de la siguiente manera absolutamente:

<? xml version = "1.0" encoding = "UTF-8" ?> 
< web-app xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"  
xmlns = "http: //java.sun .com / xml / ns / javaee " xmlns: web =" http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "  
xsi: schemaLocation =" http://java.sun.com / xml / ns / javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "  
id =" WebApp_ID " version =" 3.0 " > 
    < nombre > MyApp </ name > 
    < absoluto- pedidos > 
        < nombre >
        < nombre > MyFragment2 </ name > 
    </ absolute-ordering > 
    ... 

</ web-app >

Ordenación relativa de fragmentos web:

Usando el elemento <ordering> en web-fragment.xml , puede establecer el orden relativo. A continuación, se muestran tres archivos diferentes de web-fragment.xml :

web-fragment.xml :

< fragmento-web > 
    < nombre > MyFragment1 </ name > 
    < pedido > < después > < nombre > MyFragment2 </ nombre > </ después > </ pedido > 
    ... 
</ fragmento-web >

web-fragment.xml :

< fragmento web > 
    < nombre > MyFragment2 </ nombre > 
    ... 
</ fragmento web >

web-fragment.xml :

< fragmento web > 
    < nombre > MyFragment3 </ nombre > 
    < pedido > < antes > < otros /> </ antes > </ pedido > 
    .. 
</ fragmento web >

El <before> indica que el fragmento que contiene debe reservarse antes del nombre del fragmento para proporcionar etiquetas < name > anidadas . La etiqueta <after> especifica que el clip debe ordenarse después del nombre del clip proporcionado bajo la etiqueta <name> anidada . En < antes > < Otros /> </ antes que indica que el fragmento contiene el primer tipo debe ser después de la web.xml.

La secuencia de los fragmentos de página web anteriores es la siguiente:

    1. MyFragment3

    2. MyFragment2

    3. MyFragment1

Referencias de: Ordenar fragmentos web

 

3. ¿Efecto de demostración real?

* Primero cree un proyecto maven de prueba, aquí solo está el archivo web-fragment.xml, los otros no son solo para demostración:

Configure el parámetro context-param en el archivo web-fragment.xml:

 Luego instalar en el almacén local

 Nota: Este archivo debe almacenarse en el directorio META-INF del archivo JAR y configurarse en maven:

      < compilación > 
        < recursos > 
          < recurso > 
             < directorio > src / main / resources </ directorio > 
             < targetPath > META-INF / </ targetPath > 
          </ resource > 
       </ resources > 
    </ build >

*****************

* Cree un proyecto javaweb de AA, agregue un oyente o parámetros de contexto:

 

 

Iniciar resultados de impresión del proyecto:

 

 De los resultados se puede ver que los parámetros de la configuración web-fragment.xml en el proyecto de prueba surten efecto, y solo la aplicación del paquete jar puede completar la configuración modular del archivo web.xml.

 

Supongo que te gusta

Origin www.cnblogs.com/xiejn/p/12687976.html
Recomendado
Clasificación