La diferencia entre filtros de servlet e interceptores springMVC
1. Definición
Interceptor: en la programación orientada a la personalización, está en su servicio o método, antes de llamar al método o después de llamar al método, como el proxy dinámico. Implementación de interceptor simple que imprime una cadena antes de llamar al método (o realiza otras operaciones de lógica de negocios), o imprime la cadena después de llamar al método, antes de llamar al método o después de llamar al método. Incluso se lanzan excepciones. al realizar operaciones de lógica de negocios.
Filtrado: en javaweb, filtra cierta información por adelantado cuando se reciben solicitudes y respuestas, o establece algunos parámetros por adelantado y luego realiza operaciones de lógica empresarial al pasar acciones de servlet o struts, como filtrar URL ilegales (las solicitudes que no son direcciones login.do se filtrarán si el usuario no ha iniciado sesión), o establecer el juego de caracteres de manera uniforme antes de pasar la acción del servlet o struts, o eliminar algunos caracteres ilegales...
2. Configuración del archivo XML
1.filter
El método de filtrado consiste en crear una clase XXXFilter para implementar esta interfaz, y en el método doFilter del clase Declare la regla de filtrado y luego declare su ruta filtrada en el archivo de configuración web.xml.
Declare la ruta que filtra en xml
lt; filtergt;
lt; filter-namegt;
com.web.util.XXXFilter
lt;/filter-classgt
lt;/filtergt
lt; filtro-mappinggt;
lt;filtro-nombregt;
lt;/filtro-mappinggt; .util.XXXFilter
lt;/filter-classgt ;
lt;/filtergt;
lt;filter-mappinggt;
lt;filter-namegt;XXXFilterlt;/filter-namegt;
lt;url-patterngt;*.actionlt;/url-patterngt;
lt;/filter-mappinggt;
2. Interceptor
También debe implementar la interfaz HandlerInterceptor. Aquí solo se configuran las anotaciones de métodos
lt;! -- Interceptores --gt;
lt; mvc: interceptoresgt
lt;! -- Múltiples interceptores, ejecutados en orden --gt;
lt; mvc: interceptorsgt;
lt; ! -- Si no está configurado o /*, todos los controladores serán interceptados --gt
lt;bean class="com.wy.interceptor.CommonInterceptor"gt;lt;/beangt;
lt;/mvc! -- Interceptores --gt;
lt;/mvc:interceptoresgt
lt;! -- Múltiples interceptores, ejecutados en orden --gt;
lt; mvc: interceptorsgt;
lt; ! -- Si no está configurado o /*, todos los controladores serán interceptados --gt
lt;bean class="com.wy.interceptor.CommonInterceptor"gt;lt;/beangt;
lt;/mvc.Interceptor gt;
lt;/mvc: Interceptor gt;
Tres diferencias específicas
Filtro
p>Interceptores
Más de una orden de ejecución
Depende del mapeo de filtros configurado en el orden de prioridad
Según el orden configurado, pero el orden controlable por comando
Especificación
Definida en la especificación de Servlet, es compatible con el contenedor de Servlet.
En el contenedor Spring, es compatible con el marco Spring.
Ámbito de uso
Se puede utilizar únicamente en programas web.
Se puede utilizar tanto en programas web como en aplicaciones y programas Swing.
Profundidad
Los filtros solo pueden funcionar antes y después de los servlets.
Los interceptores pueden profundizar antes y después de los métodos, antes y después de que se lancen excepciones, etc.
4. Resumen
La diferencia esencial entre los dos: los interceptores se basan en el mecanismo de reflexión de Java, mientras que los filtros se basan en funciones de devolución de llamada. En términos de flexibilidad, el interceptor es más poderoso. Puede hacer todo lo que puede hacer el filtro y puede ejecutarse antes o después de la solicitud, lo cual es más flexible. El filtro codifica principalmente direcciones URL, filtra parámetros inútiles y comprobaciones de seguridad (más generales, como iniciar sesión o no). Si es demasiado detallado, se recomienda utilizar un interceptor. Pero aún tienes que elegir el correcto según las diferentes situaciones.