spring - 拦截器或过滤器

标签 spring spring-mvc servlet-filters interceptor

我正在开发一个 Spring 应用程序,我想在其中进行一些安全检查,例如文件的 MD5 检查、数据库检查、应用程序版本检查等。

我读过拦截器和过滤器,但仍然有点困惑使用哪个更好。

无论我读过什么文档,都指定过滤器和拦截器都可用于日志记录和审计,因此哪一个适合这种情况。
还可以配置所有这些安全检查(文件的 MD5 检查、DB 检查、应用程序版本检查),这意味着允许 DB 检查,同样允许应用程序版本检查。

最佳答案

在我看来,过滤器和拦截器之间最大的区别之一是:

过滤器只在 J2EE web 应用中起作用,不能在应用服务器之外使用,拦截器可以工作在不同的组件中而不依赖于 web 层,总之拦截器比过滤器有更广泛的领域。
如果您打算将某些组件移出容器,则应考虑使用拦截器。

过滤器在请求/响应域中更多地工作,另一方面拦截器在方法执行域中更多地起作用。

如果您需要做一些可能影响对您的应用程序的请求或响应的事情,例如日志记录、安全性、审计,或者您会影响它们上的数据,那么您的选择是过滤器,不要忘记它们提供的插件功能。

Interceptors are used in conjunction with Java EE managed classes to allow developers to invoke interceptor methods on an associated target class, in conjunction with method invocations or lifecycle events

关于spring - 拦截器或过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23381648/

相关文章:

java - Spring事务没有正确回滚

spring - 部署为 WAR 时无法使用 Spring Boot WebFlux 解决 View 异常

mysql - 如何使 AWS RDS MySql 5.6 不区分大小写?

java - 使所有对 mysite.com/user/specified/path 的请求运行相同的 JSP

java - FindOne 无法使用 Spring 工作

java - Spring XML 配置不起作用 -

java - spring中如何将事务设置在最底层,类似jdbc?

java - 使用 Spring MVC 从存储库检索 XML 元数据

spring - 如何在Spring中使用WebMvcConfigurerAdapter添加过滤器?

java - Tomcat 过滤器对请求输入流产生不利影响(输入流为空)