Diferencias y conexiones entre servlets, filtros, oyentes, interceptores
1. Concepto
1.Servlet: Servlet es una aplicación Java que ejecuta el lado del servidor, con características independientes de la plataforma y el protocolo, y puede generar dinámicamente páginas web, que funcionan en la capa intermedia entre las solicitudes del cliente y las respuestas del servidor.
2.filter: el filtro es un fragmento de código reutilizable que se puede usar para convertir las solicitudes, respuestas e información del encabezado. El filtro no es como un servlet. No puede generar una solicitud o respuesta. Simplemente modifica una solicitud a un cierto recurso o modifica una respuesta de un determinado recurso.
3. Oyente: El oyente, literalmente, se puede ver que el oyente se usa principalmente para escuchar solo. A través del oyente, puede escuchar una acción de ejecución en un servidor web y hacer las respuestas correspondientes de acuerdo con sus requisitos.
En términos simples, es un componente funcional que ejecuta automáticamente el código cuando se crean los tres objetos de aplicación, sesión y solicitud o cuando se agregan los atributos de modificación y eliminación.
4. Interceptor: es programación en orientación tangencial, que es llamar a un método antes de su servicio o un método, o llamar a un método después del método.
Por ejemplo, el proxy dinámico es una implementación simple de un interceptor. Puede imprimir una cadena antes de llamar al método (o hacer otras operaciones lógicas comerciales), también puede imprimir una cadena después de llamar al método, o incluso hacer operaciones de lógica comercial cuando lanza una excepción.
5. Servlet, filtro, oyente se configuran en Web.xml, el interceptor no está configurado en Web.xml, Struts Interceptor está configurado en Struts.xml. El interceptor para Spring está configurado en Spring.xml.
2. Orden de carga
El orden de carga de Web.xml es: context -param -> oyente -> filtro -> servlet
3. Responsabilidades
1.Servlet:
(1) Cree y devuelva una página HTML completa que contenga contenido dinámico basado en la naturaleza de la solicitud del cliente
(2) Cree una parte de la página HTML (fragmento HTML) que se puede incrustar en una página HTML existente
(3) Leer datos ocultos enviados por el cliente
(4) Lea los datos de visualización enviados por el cliente
(5) Comunicarse con otros recursos del servidor (incluidas las aplicaciones de base de datos y Java)
(6) Envíe datos ocultos al cliente a través del código de estado y el encabezado de respuesta.
2.filter:
(1) El filtro puede preprocesar las solicitudes de los usuarios antes de que una solicitud llegue al servlet, o también puede procesar las respuestas HTTP al salir del servlet
(2) Antes de ejecutar el servlet, primero ejecute el programa de filtro y haga un trabajo de preprocesamiento para él.
(3) Modifique la solicitud y la respuesta de acuerdo con las necesidades del programa
(4) interceptar la ejecución del servlet después de que se llama al servlet.
3. Listener:
8 Las interfaces del oyente se proporcionan en la especificación Servlet2.4, que se puede dividir en tres categorías, de la siguiente manera:
(1) Interfaz Listne R relacionada con ServletContext. Incluyendo: servletContextListener, servletContextAttributeListener
(2) Interfaz Listner relacionada con HTTPsession. Incluyendo: httpsessionListner, httpsessionTtributeListener, httpsessionbindingListener, httpsessionActivationListener
(3) Interfaces del oyente relacionadas con ServLetRequest, que incluyen: ServLetRequestListner, ServLetRequestatTributEnstener
4. Diferencia
1.Servlet: el proceso de servlet es corto. Después de transmitir la URL, se procesa y luego se devuelve o se giró a una página especificada por usted. Se utiliza principalmente para controlar antes del procesamiento de negocios.
2.filter: el proceso está roscado. Después de transmitir la URL, después de la verificación, el proceso original puede mantenerse hacia abajo y recibido por el siguiente filtro, servlet, etc., y después de procesar el servlet, no continuará pasando hacia abajo.
La función de filtro se puede usar para mantener el proceso en marcha de la manera original o para dominar el proceso, mientras que la función de servlet se usa principalmente para dominar el proceso. El filtro puede considerarse como un suplemento del servlet (toallita suave).
El filtro puede considerarse una "variante" de servlet. Se usa principalmente para preprocesar las solicitudes de los usuarios, y también puede procesar httpservletResponse. Es una cadena de procesamiento típica.
La diferencia entre TI y Servlet es que no puede generar una respuesta directamente al usuario.
El proceso completo es: Filtro de preprocesos de solicitudes de usuarios, luego entrega las solicitudes al servlet para su procesamiento y genera una respuesta, y finalmente filtra el procesamiento posterior de la respuesta del servidor.
3. Reglas coincidentes
Cuando se envía una solicitud al contenedor de servlet, el contenedor primero restará la URL solicitada a la ruta de contexto de aplicación actual como URL de mapeo de servlet. Por ejemplo, estoy visitando http: //localhost/test/aaa.html (mi contexto de aplicación es prueba).
El contenedor eliminará http: // localhost/tes y usará la parte /aaa.html restante para que coincida con la asignación de servlet, es decir, use la parte restante para que coincida con el patrón de url del servlet configurado en web.xml.
Nota: Hay ciertas reglas para este proceso de coincidencia de mapeo, y cada partido eventualmente coincidirá con solo un servlet. (Esto es diferente del filtro)
Reglas de coincidencia de servlet: cuando un servlet coincida con éxito, no se combinará más
Matriota de ruta precisa:
Ejemplo: por ejemplo, el patrón URL de servleta es /prueba, y el patrón de url de servletb es /*. En este momento, si la URL I Access es http: // localhost/test,
En este momento, el contenedor primero realizará una coincidencia de ruta precisa y descubrirá que /la prueba se corresponde exactamente con servleta, por lo que llamar a servleta y no prestará atención a otros servlets.
Coincidencia del camino más largo:
Ejemplo: el patrón URL de servleta es/test/*, y el patrón URL de servletb es/test/a/*. Al acceder a http: // localhost/test/a,
El contenedor seleccionará el servlet con la ruta más larga para coincidir, que es el servletb aquí.
COMPARACIÓN DE EXTENSIÓN: si el último segmento de la URL contiene una extensión, el contenedor seleccionará el servlet apropiado según la extensión.
Ejemplo: url-patern de servleta: *.accion
4. Los servlets y los filtros están dirigidos a URL, etc., mientras que los oyentes están dirigidos a objetos, como la creación de sesiones y la aparición de session.settribute, y hacen algo cuando ocurren tales eventos.
Se puede usar para: Spring integra puntales, inyectar atributos en la acción de los Struts, implementa tareas de tiempo de aplicaciones web, estadísticas sobre el número de usuarios en línea, etc.
5. Interceptor Interceptor, similar al filtro, pero se configura en Struts.xml, no en Web.xml, y no para URL, sino para la acción. Cuando la página envía una acción,
Realizar operaciones de filtrado es equivalente al mecanismo de complemento proporcionado por Struts1.x. Se puede considerar como el primero es el filtro proporcionado por Struts1.x, y el interceptor es el filtro proporcionado por Struts2.
Diferencias del filtro:
(1) No está configurado en Web.xml, pero está configurado en Struts.xml, y es con la acción (2) la acción en sí puede especificar qué interceptor usar para hacer las cosas antes de recibirlo
6. La diferencia y la conexión entre filtros e interceptores en Struts2:
(1) Struts2 proporciona el interceptor, mientras que los filtros son proporcionados por Servlet Standard
(2) El interceptor intercepta el método objetivo de acción objetivo, mientras que los filtros se dirigen a varios recursos web
(3) El interceptor está configurado en struts.xml, mientras que el filtro está configurado en el archivo web.xml
(4) Los interceptores se organizan juntos utilizando una pila de interceptor, mientras que los filtros están unidos de acuerdo con los recursos interceptados. El orden de ejecución está determinado por su posición en el archivo de configuración.
(5) Los interceptores se basan en el mecanismo de reflexión de Java, mientras que los filtros se basan en devoluciones de llamada de función.
(6) Los filtros dependen de los contenedores de servlet, mientras que los interceptores no dependen de los contenedores de servlet.
(7) Los interceptores solo pueden trabajar en solicitudes de acción, mientras que los filtros pueden trabajar en casi todas las solicitudes.
(8) El interceptor puede acceder a objetos en el contexto de acción y la pila de valor, pero el filtro no puede.
(9) Durante el ciclo de vida de vida, el interceptor se puede llamar varias veces, mientras que el filtro solo puede llamarse una vez cuando se inicializa el contenedor.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!