Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Qué significa la siguiente especificación de servlet3.0?

¿Qué significa la siguiente especificación de servlet3.0?

Especificación de servlet3.0: (se puede ver el archivo de configuración)

Requisitos de la versión 1.1

jdk1.6

tomcate7.0

1.2 Contenido agregado: Ver especificación

1.2.1 Agregar soporte para anotaciones

@WebServlet: después de que la clase se declara como un servlet, el contenedor procesará la anotación durante la implementación y la agregará de acuerdo con la configuración de atributos específicos. La clase apropiada se implementa como un servlet.

Las anotaciones tienen algunos atributos comunes que se muestran en la siguiente tabla (todos los atributos siguientes son opcionales, pero los patrones vlaue o urlPatterns generalmente son necesarios y ninguno puede estar presente) si se agrega soporte de anotación

, que se puede utilizar para declarar una clase como Servlet. nombre-servlet;. Si no se especifica explícitamente, el servlet utilizará el nombre completo de la clase.

value String[]

Esta propiedad es equivalente a la propiedad urlPatterns. Estas dos propiedades no se pueden utilizar al mismo tiempo.

urlPatterns String[] Especifica un conjunto de patrones de coincidencia de URL para el servlet. Es equivalente a la etiqueta .

loadOnStartup int especifica el orden en el que se cargan los Servlets, equivalente a la etiqueta .

initParams WebInitParam[] especifica el conjunto de parámetros de inicialización del servlet, equivalente a la etiqueta lt;init-paramgt;

asyncSupported

booleano declara si el servlet admite el modo de operación asíncrono, equivalente a la etiqueta .

cadena de descripción Descripción del servlet, equivalente a lt; etiqueta de descripción.

displayName cadena El nombre para mostrar del servlet, generalmente utilizado junto con herramientas, equivalente a la etiqueta .

Aquí hay un ejemplo simple:

@WebServlet(urlPatterns = {"/simple"}, asyncSupported = true,

loadOnStartup = -1, nombre = "SimpleServlet", displayName = "ss". displayName = "ss",

initParams = {@WebInitParam(nombre = "nombre de usuario", valor = "tom")}

)

)

La clase pública SimpleServlet extiende HttpServlet{ ...}

Con esta configuración, no necesita configurar el servlet correspondiente en web.xml; y , el contenedor publicará la clase como un servlet según los atributos especificados durante la implementación.

Su formulario de configuración web.xml equivalente es el siguiente:

lt;Servletgt;

lt;display-namegt;sslt;/display-namegt;

lt;servlet-namegt.SimpleServletlt;/servlet-namegt;

lt;servlet-classgt;footmark.servlet.SimpleServletlt;/servlet-classgt;

lt;load-on-startupgt;-1lt;/load-on-startupgt;

lt;async-supportedgt;truelt;/async-supportedgt;

lt;init-paramgt ;

lt;param-namegt;usernamelt;/param-namegt;

lt;param-valuegt;tomlt;/param-valuegt;

lt; /init-paramgt;

lt.;/servletgt;

lt;servlet-mappinggt;

lt;servlet-namegt;SimpleServletlt;/servlet-namegt ;

lt;url-patterngt./simplelt;/url-patterngt;

lt;/servlet-mappinggt;

@WebInitParam

Esta anotación generalmente no se usa sola, sino con @WebServlet o @WebFilter. Su propósito es especificar los parámetros de inicialización de un Servlet o filtro, equivalente a la subetiqueta init-paramgt; de lt;servletgt;

y lt;filtergt; La siguiente tabla proporciona algunos atributos comunes de @WebInitParam:

Tabla 2. Atributos comunes de @WebInitParam

Tipo de nombre de atributo

Es una descripción opcional

p>

cadena de nombre

No especifica el nombre del parámetro, equivalente a lt;param-namegt;.

cadena de valor

No especifica el valor del parámetro, equivalente a lt;param-valuegt;.

la cadena de descripción es una descripción del parámetro, equivalente a lt;descriptiongt;.

@WebFilter

@WebFilter se utiliza para declarar una clase como filtro. El contenedor la procesará durante la implementación. El contenedor implementará la clase apropiada según la configuración de propiedades específicas. . para el filtro. La anotación tiene los siguientes atributos

usados ​​habitualmente

(todos los siguientes atributos son opcionales, pero value, urlPatterns y servletNames deben contener al menos uno de ellos, value y urlPatterns no pueden** * existe, si ambos atributos se especifican al mismo tiempo, serán

comúnmente ignorados):

@WebFilter se usa para declarar una clase como filtro y el contenedor Procese este filtro.

El siguiente es un ejemplo sencillo:

@WebFilter(servletNames = {"SimpleServlet"}, filterName="SimpleFilter")

la clase pública LessThanSixFilter implementa el filtro {...}

Equivalente a los siguientes archivos en web.xml:

lt;filtergt

lt;filter-namegt;SimpleFilterlt;/filter; -namegt;

lt; filtro-clasegt.xxxlt;/filtro-clasegt;

lt;/filtergt;

lt;filtro-mappinggt; p>

lt;filtro-mappinggt;

lt;p>

lt;filtro-nombregt;SimpleFilterlt;/filtro-nombregt; ;SimpleServletlt;/servlet-namegt;

lt;/filter-mappinggt;

@WebListener

Esta anotación se utiliza para declarar una clase como oyente. La clase marcada por @WebListener debe implementar al menos una de las siguientes interfaces: ServletContextListener ServletContextAttributeListener ServletRequestListener ServletRequestAttributeListener HttpSessionListener HttpSessionAttributeListener

Tabla 4. Atributos comúnmente utilizados de @WebListener

Tipo de nombre de atributo

Ya sea descripción opcional

cadena de valor

Sí Descripción del oyente.

Ejemplo:

@WebListener("Esto es solo un oyente de demostración")

la clase pública SimpleListener implementa ServletContextListener{...}

Equivalente:

lt;listenergt;

lt;listener-classgt;footmark.servlet.SimpleListenerlt;/listener-classgt

lt;/listenergt;

@MultipartConfig

Esta anotación está diseñada para complementar el soporte de carga de archivos proporcionado por HttpServletRequest en Servlet 3.0. Esta anotación

está marcada en el servlet para indicar que el tipo MIME de la solicitud que el servlet desea manejar es multiparte/form-data.

Además, esta anotación proporciona una serie de propiedades para simplificar el manejo de los archivos cargados. Los detalles son los siguientes:

Tabla 5. Atributos comúnmente utilizados de @MultipartConfig

Tipo de nombre de atributo

Si la descripción es opcional

fileSizeThreshold

int es cuando la cantidad de datos es mayor que este valor, el contenido se escribirá en el archivo.

cadena de ubicación Sí La dirección donde se guarda el archivo generado.

maxFileSize long es el tamaño máximo de archivo que se permite cargar. El valor predeterminado es -1, lo que significa que no hay límite.

maxRequestSize

long es el número máximo de solicitudes para esta solicitud de datos de formulario/arte múltiple. El valor predeterminado es -1, lo que significa que no hay límite.

1.2.2 Agregar soporte para carga y descarga de archivos: agregue la clase Part, que en realidad es un contenedor de la clase fileUpload

@WebServlet(urlPatterns = {"/servletDemo1"}, asyncSupported = verdadero,

loadOnStartup = -1, nombre = "SimpleServlet", displayName = "ss"

)

@MultipartConfig

público la clase ServletDemo1 extiende HttpServlet {

privado estático final serialVersionUID = 1L;

doGet vacío protegido (solicitud HttpServletRequest, respuesta HttpServletResponse) lanza ServletException, IOException {

/ /response.lastIndexOf("\") 1, nombre.longitud()-1);

part.write(nombre de archivo);

}

lt ;form action="${pageContext.request.contextPath}/servletDemo1" método="post" enctype="multipart/form-data"gt;lt;! --formulario recuerda agregar en...--gt;

lt; input type="text" name="input" /gt; ; tipo de entrada="archivo" nombre="archivo"gt;lt;brgt;

lt;tipo de entrada="enviar" valor="enviar"gt;

lt;/ formgt ;

1.2.3 Agregar la inicialización de servlets y filtros a través de servletContext

Para aprender

1.2. Soporte para servlets y filtros 4 Agregar soporte de procesamiento asincrónico (temporalmente) inútil, utilice Ajax)

1.2.5 Capacidad de conexión agregada:

Con esta característica, ahora podemos usar aplicaciones web existentes sin modificar Para ampliar nuevas funciones en el caso de un programa, sólo necesita colocar el paquete JAR en un formato específico en el directorio WEB-INF/lib, sin ninguna configuración adicional. Servlet 3.0 introdujo un archivo descriptor de implementación web-fragment.xml llamado "Fragmento de descriptor de implementación del módulo web", que debe almacenarse en el directorio META-INF del archivo JAR y puede contener cualquier cosa definida en web.xml. Los paquetes JAR normalmente se colocan en el directorio WEB-INF/lib.

De lo contrario, todos los recursos utilizados por el módulo, incluidos archivos de clase, archivos de configuración, etc., deben colocarse en una ruta que el cargador de clases del contenedor pueda cargar en cadena, como el directorio de clases.

Ahora, hay tres formas de agregar la configuración de Servlet a una aplicación web (filtros, oyentes y configuraciones de Servlet son todas equivalentes, por lo que aquí tomamos la configuración de Servlet como ejemplo, filtro y oyente Las características son muy similares ): Escriba una clase que herede de HttpServlet y coloque la clase en la sección correspondiente del directorio de clases. Coloque la clase en el directorio de clases de la estructura de paquete adecuada y modifique web.xml para agregar la declaración de Servlet. Este es el método más primitivo; escriba una clase que herede de HttpServlet, declare la clase como un Servlet usando la anotación @WebServlet en la clase y luego colóquela en la estructura del paquete correspondiente en el directorio de clases sin modificar el documento web.xml. Escriba una clase que herede de HttpServlet, empaquete la clase como un JAR y coloque un archivo web-fragment.xml en el directorio META-INF del JAR que declara la configuración de Servlet correspondiente. Archivo web-fragment.xml

A continuación se muestra un ejemplo de un archivo web-fragment.xml. Un ejemplo de archivo fragment.xml es el siguiente:

lt;?xml version="1.0" encoding="UTF-8"?

lt;web-fragment

xmlns=/xml/ns/javaee

xmlns:xsi="/xml/ns/javaee

/xml/ns/javaee/web-fragment_3_0. xsd"< / p>

metadata-complete="true"gt;

lt;servletgt;

lt;servlet-namegt;fragmentlt;/servlet -namegt;

lt;servlet-classgt;footmark.servlet.FragmentServletlt;/servlet-classgt;

lt;/servletgt;

lt;servlet- mapeogt;

lt;servlet-mappinggt;

lt; p>

lt;servlet-namelt;fragmentlt;/servlet-namegt;

lt ;url-patternngt;/fragmentlt;/url-patternngt;

lt;/servlet -mappinggt

lt;/web-fragmentgt;

1.2.51 Problema de orden de carga

Varios web-fragment.xml en una sola declaración de aplicación web, junto con un solo archivo web.xml, el problema de orden de carga se convierte en un problema que debe enfrentarse.

web-fragment.xml contiene dos etiquetas opcionales de nivel superior: lt;namegt; y lt;orderinggt;, que normalmente se utilizan si desea especificar un orden de carga explícito para el archivo actual.

lt;namegt; se usa principalmente para identificar el archivo actual, mientras que lt;orderinggt; se usa para especificar el orden de prioridad.

Un ejemplo sencillo es el siguiente:

lt;web-fragment...gt;

lt;namegt;FragmentAlt;/namegt;

lt;orderinggt ;

lt;aftergt;

lt;namegt;FragmentBlt;/namegt;

lt;namegt;FragmentClt;/namegt; p>

lt;/aftergt;

lt;antes;

lt;otros/gt;

lt;/antes

lt;/orderinggt;

...

lt;/web-fragmentgt;

lt;/orderinggt;

.