拦截器或过滤器


问题内容

我正在一个Spring Application上工作,我想在其中进行一些安全性检查,例如文件的MD5检查,DB检查,应用程序版本检查等。

我已经阅读了有关拦截器和过滤器的信息,但对于使用哪种拦截器仍然有些困惑。

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


问题答案:

我认为过滤器和拦截器之间的最大区别之一是:

过滤器只能在J2EE
Web应用程序中工作,不能在应用程序服务器之外使用,拦截器可以在不同的组件中工作并且不依赖于Web层,因此摘要拦截器比过滤器具有广阔的领域。如果打算将某些组件移出容器,则应考虑使用拦截器。

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

如果您需要执行可能会影响应用程序请求或响应的操作(例如日志记录,安全性,审计),或者会影响其上的数据,那么您可以选择过滤器,不要忘记它们提供的即插即用功能。

拦截器与Java EE托管类结合使用,以允许开发人员结合方法调用或生命周期事件在关联的目标类上调用拦截器方法