Hay funcionalidad de filtros y oyentes en Servlet. Quiero saber la diferencia exacta entre el filtro y el oyente.Diferencia entre el filtro y el oyente en el servlet (Java EE)
Respuesta
servlet de filtro se utiliza para el control de petición y respuesta del cliente para el servlet, o para modificar la petición y respuesta, o para auditar y registro.
Servlet Listener se utiliza para escuchar eventos en un contenedor web, como cuando crea una sesión, o coloca un atributo en una sesión o si lo pasiva y activa en otro contenedor, para suscribirse a estos eventos puede configurar oyente en web.xml
, por ejemplo HttpSessionListener
.
Fácilmente puede tener una idea aproximada con el significado en inglés de esos dos. Filer está ahí para filtrar el contenido/recurso que entra/sale de un servlet. Por otro lado, Listener está allí, para hacer algunas cosas relacionadas cuando sucede algo en la aplicación web (escuchar).
Los filtros se utilizan para solicitudes de proceso previas y posteriores. Mira el javax.servlet.Filter
en tu tomcat/jboss/otro contenedor javadoc.
Donde los oyentes son como desencadenantes que se pueden unir a eventos en su servidor de aplicaciones (usemos el término contenedor aquí). Con los oyentes puede realizar un seguimiento de nivel de aplicación, nivel de sesión, cambios de ciclo de vida, cambios de atributos, etc. Las interfaces implementadas son javax.servlet.Listener
interfaz.
Según las respuestas de @fnt a continuación, permítanme aclarar algunas más. Los oyentes son el objetivo de los cambios en el ciclo de vida, sin tener que recibir una solicitud del cliente. Por lo tanto, para una solicitud del cliente, puede haber muchos más eventos del ciclo de vida antes de que se elimine la solicitud. Ejemplo: Quiere registrar todas las sesiones que exceden el tiempo de espera. Tenga en cuenta que SesionTimeout es un evento de ciclo de vida, que puede suceder sin que el usuario tenga que hacer nada. Para tal escenario, un oyente será apropiado.
A la cuestión del registro cuando llega una solicitud. No hay una asignación directa de una nueva solicitud a un evento detector equivalente (leer el evento del ciclo de vida). Y, por lo tanto, para cada solicitud entrante si desea registrar algo, Filter es, en mi opinión, lo correcto.
Este material de Oracle debe ser capaz de aclarar un poco más Filters and Listeners
HTH
Si bien se puede modificar el objeto de evento actual dentro de un oyente, que no puede detener la ejecución del controlador de eventos actual en un oyente Tampoco puede borrar la cola de eventos desde un oyente. Además de las diferencias impuestas en las capacidades, también están previstas para diferentes propósitos. Los oyentes tienden a centrarse en la interacción entre el controlador de eventos y el modelo, mientras que los filtros tienden a centrarse en la interacción entre el controlador de eventos y el controlador.
Fuente: web
texto de Java EE 6
Filtro
filtro es un objeto que transforman la solicitud y la respuesta (cabecera así como el contenido).
oyentes
Puede controlar y reaccionar a los eventos en el ciclo de vida de un servlet mediante la definición de los objetos detectores cuyos métodos conseguir invocado cuando se producen eventos del ciclo de vida.
El filtro es como un filtro de agua, donde se filtrarán los valores de entrada (solicitud) y de salida (respuesta).
La escucha es como escuchar (disparar): siempre que sea necesario, me realizaré.
Filtro: El filtro simplemente filtra la respuesta y la solicitud de los clientes al servlet.
Oyente: es como un disparador cuando se produce un desencadenador, toma la acción.
En resumen,
filtro es para el servlet, interceptando las solicitudes y respuestas.
Listener es para la aplicación Web, haciendo tareas importantes en eventos en el nivel de contexto, a nivel de sesión, etc.
Una diferencia importante es a menudo pasado por alto: mientras que los oyentes se disparará para una solicitud físico real, filtros funcionan con despachos de contenedores de servlet. Para una invocación de escucha, puede haber múltiples filtros/invocaciones de servlet.
Mapping filters dispatcher types. El enlace está un poco anticuado, no incluye el tipo de servidor Servlet 3.0 Async
. También se puede especificar tipos de distribuidor con el @WebFilter
anotación:
import javax.servlet.DispatcherType;
import javax.servlet.annotation.WebFilter;
@WebFilter(servletNames = { "My Servlet" },
dispatcherTypes = { DispatcherType.REQUEST, DispatcherType.FORWARD })
Después de leer todas las respuestas y blogs que esto es lo que tengo
Filtro
Un filtro es un objeto que intercepta dinámicamente solicitudes y respuestas para transformar o usar la información contenida en las solicitudes o respuestas .
Los filtros generalmente no crean respuestas, sino que en su lugar proporcionan funciones universales que se pueden "adjuntar" a cualquier tipo de servlet o página JSP.
El filtro se ejecuta antes de la vista de representación, pero después de que el controlador emita la respuesta .
Un filtro se utiliza en la capa web solo como se define en web.xml.
Los filtros son más adecuados al tratar su solicitud/respuesta como un sistema de caja negra . Funcionarán independientemente de cómo esté implementado el servlet .
filtros se utilizan para realizar tareas de filtrado, tales como entrada autenticación, auditoría de solicitudes entrantes de páginas web, conversión, la tala, de compresión, de cifrado y descifrado, de entrada validación etc.
se utiliza un filtro Servlet solo en la capa web, no puede usarlo fuera de un contexto web.
Para más detalles sobre el filtro http://array151.com/blog/servlet-filter/
Listener
servlet Listener se utiliza para escuchar a los eventos en un contenedor web, por ejemplo, cuando se crea una sesión o colocar un atributo en una sesión o si pasiva y se activa en otro contenedor, para suscribirse a estos eventos puede configurar oyente en web.xml, por ejemplo, HttpSessionListener.
oyentes disparará para una solicitud físico real que puede ser asociados a eventos en el servidor de aplicación .Con oyentes, se puede realizar un seguimiento de nivel de aplicación, a nivel de sesión, los cambios del ciclo de vida, etc. atribuir cambios
Puede supervisar y reaccionar ante eventos en el ciclo de vida de un servlet por definiendo objetos de escucha cuyos métodos se invocan cuando ocurren los eventos del ciclo de vida .
Para más detalles: http://array151.com/blog/servlet-listener/
y aquí está la diferencia http://array151.com/blog/difference-between-servlet-filter-and-servlet-listener/
- 1. ¿Diferencia entre el mapeo de servlet/servlet y el mapeo de filtro/filtro?
- 2. ¿Cuál es la diferencia entre un filtro de servlet y un oyente de contexto de servlet?
- 3. Diferencia entre Java SE y Java EE
- 4. Diferencia entre Java EE 5 y Java EE 6
- 5. Diferencia entre el Oyente TCP y el Socket
- 6. Diferencia entre el selector CSS y el filtro jQuery?
- 7. ¿Cuál es el uso de filtro y cadena en servlet?
- 8. diferencia entre el filtro gabor y la transformada gabor
- 9. Diferencia entre el filtro de Django() y get() métodos
- 10. NHibernate: diferencia entre Interceptor y Oyente
- 11. Diferencia entre búsqueda y filtro
- 12. ¿Cuál es la diferencia entre el "Java EE" y "PCR" distribuciones de Eclipse?
- 13. Diferencia entre búsqueda y filtro en jquery
- 14. Diferencia entre filtro y conv en MATLAB
- 15. Diferencia entre el servicio web y el servlet basado en texto
- 16. dependencia inyectar servlet oyente
- 17. Diferencia entre servlet y servicio web
- 18. Diferencia entre el servidor web y el contenedor de servlets
- 19. cómo cambiar el requestURL utilizando el filtro o servlet
- 20. ¿Diferencia entre el margen y el relleno?
- 21. Diferencia entre el objeto y el objeto
- 22. ¿Diferencia entre el análisis y el paso?
- 23. Pruebas unitarias en el entorno Java EE
- 24. ¿Filtro de servlet para el almacenamiento en caché del navegador?
- 25. diferencia entre el entero atómico Java y C# Interlocked.Increment method
- 26. diferencia entre el iPhone AES (Objetivo-c) y Java
- 27. Servlet Java NIO en el archivo
- 28. ¿Cuál es la diferencia principal entre Java para Google App Engine y Java EE?
- 29. Diferencia entre '.' y "." en java
- 30. ¿Diferencia entre el bloqueo sincronizado y el reentrante?
Y tampoco vale la pena que los oyentes implementen javax.servlet.ServletContextListener mientras los filtros implementan javax.servlet.Filter – dade
¿Pueden aclarar esto por mí? 'ServletRequestListener' escucha' ServletRequestEvent', que es un evento activado para cada solicitud entrante. Si deseo registrar el agente de usuario para cada solicitud a mi aplicación web, ¿debería usar este oyente o un filtro? – arun
@BalusC ¿Definir un oyente es obligatorio? Me da error 'No se encontró WebApplicationContext: no ContextLoaderListener registrado?' Si no defino un oyente en mi aplicación Spring. –