我想知道是否有任何使用过滤器的成本相关的硬数据?例如,在使用遗产servlet共享行为和使用过滤器之间的成本方面。
谢谢,
安东尼
谢谢,
安东尼
如果有人能够发布硬数据,我会感到惊讶。即使他们这样做了,它很可能与您无关,因为数字取决于过滤器中正在执行的操作。这也很可能属于过早优化的范畴 - 除非您真的把事情搞砸了,否则它不太重要。
我假设 "heritage" 的意思是 "inheritance",并且说过滤器是一个更好的解决方案。您可以在配置中关闭和打开它们。
过滤器是HTTP请求的装饰器或方面。由于它们是受人尊敬的、经过试验的模式,为什么它们不能对servlets有用并保持安全呢?
我会说您的担忧有些过分。
话虽如此,我不建议构建如此长、复杂的过滤器链,以至于性能成为问题。如果您进行压缩、记录、性能指标等操作,并最终得到一串十几个过滤器,那么您可能会遇到问题。
在过滤器中,没有任何可衡量的东西,完全被实际工作所掩盖。每次都不会创建一个新的过滤器实例,就像Servlet一样它们是共享的。
与继承相比的最大优点是能够在运行时进行配置和组合(父类已编译,只能有一个)。
需要考虑的一件事是,过滤器只能包装请求:它可以在之前和之后(或替代)添加代码。当Servlet运行后,响应可能已经被提交。它不能在请求处理的中间插入代码,而正确定义回调到父类(或Servlet端的其他技术)可以做到这一点。这意味着过滤器可能不适用于某些任务。