![](/img/trans.png)
[英]OpenSessionInViewFilter cannot be cast to javax.servlet.Filter
[英]impact of javax.servlet.Filter on performance?
我想知道是否有关于使用过滤器的成本的硬数据? 例如,在使用servlet上的遗产来共享行为或使用过滤器之间?
谢谢,
安托万
如果有人可以发布硬数据,我会感到惊讶。 即使他们这样做,也很可能与您无关,因为数字将取决于过滤器中的操作。 它也可能属于过早的优化类别 - 除非你真的搞砸了一些东西,否则它不太重要。
我认为“遗产”意味着“继承”,并说过滤器是一个更好的解决方案。 您可以选择在配置中关闭和打开它们。
过滤器是HTTP请求的装饰器或方面。 由于这些都是备受推崇的,经过验证的模式,为什么servlet无法使用它们?
我说你的担忧被夸大了。
话虽如此,我不建议构建如此长而复杂的过滤器链,性能确实成为一个问题。 如果您执行压缩,日志记录,性能指标等,最终会出现问题,最终会出现一系列过滤器。
没有什么可衡量的,完全与您在过滤器中所做的工作相比相形见绌。 甚至每次都没有创建过滤器的新实例,就像它们被共享的Servlet一样。
继承的最大优点是能够在运行时配置和组合(编译父类,并且只能有一个)。
要考虑的一件事是Filter只能包装一个请求:它可以在之前和之后(或者代之)添加代码。 在Servlet运行之后,响应可能已经提交。 它不能将代码注入到请求处理的中间,正确定义的回调到父类(或Servlet端的一些其他技术)可以做到。 这意味着过滤器可能不适合某些任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.