![](/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.