La diferencia entre filtros Spring e interceptores
(1) Filtro:
Depende del contenedor de servlet. Es un estándar JavaEE. Se preprocesa antes de que la solicitud ingrese al contenedor y aún no haya ingresado al Servlet. la solicitud finaliza. El posprocesamiento se realiza entre retornos al front-end. En una implementación basada en devoluciones de llamadas de funciones, casi todas las solicitudes se pueden filtrar, pero la desventaja es que una instancia de filtro solo se puede llamar una vez cuando se inicializa el contenedor. El propósito de usar filtros es realizar algunas operaciones de filtrado para obtener los datos que queremos obtener, tales como: modificar la codificación de caracteres en el filtro; modificar algunos parámetros de HttpServletRequest en el filtro, que incluyen: filtrar texto vulgar y caracteres peligrosos en espera.
Para conocer algunos usos de filtros, consulte estos artículos que escribí:
Herede HttpServletRequestWrapper para modificar los parámetros de HttpServletRequest en el filtro:
Uso en SpringMVC un filtro para filtrar caracteres peligrosos que fácilmente causan XSS:
(2) Interceptor:
El interceptor no depende del contenedor de servlets, sino del marco web. En SpringMVC El medio. uno se basa en el marco SpringMVC. La implementación se basa en el mecanismo de reflexión de Java, que es un uso de programación orientada a cortes (AOP). Dado que el interceptor se basa en la llamada del marco web, puede usar la inyección de dependencia (DI) de Spring para obtener los beans en el contenedor IOC y realizar algunas operaciones comerciales. Al mismo tiempo, una instancia de interceptor se puede usar varias veces. el ciclo de vida de una llamada al controlador. Pero la desventaja es que solo puede interceptar solicitudes del controlador. Algunas otras solicitudes, como el acceso directo a recursos estáticos, no se pueden interceptar. La función de interceptor es realmente muy útil en la identificación de permisos de solicitudes.