Разница между клапаном и фильтром

Может кто-то объяснить разницу между фильтром сервлетов и клапаном tomcat. В чем преимущество использования одного над другим?

3 ответа

Из документации Tomcat:

Элемент Valve представляет собой компонент, который будет вставлен в конвейер обработки запроса для соответствующего контейнера Catalina

Фильтры сервлетов выполняют ту же самую цель, но клапаны являются специфичными для Tomcat классами, тесно связанными с инфраструктурой Tomcat/API. С другой стороны, API сервлета реализуется всеми совместимыми веб-контейнерами. Тем не менее, клапаны не будут работать, например. Jetty, у которого для этого есть API, в то время как фильтры сервлетов будут.

Другое важное отличие заключается в том, что клапаны работают на уровне контейнера (перехватывают все приложения/запросы), в то время как фильтры сервлетов перехватывают весь запрос только для данного приложения. Поэтому, если вы хотите внедрить серверный перехватчик, необходимы клапаны.


Клапаны специфичны для котла. Фильтры являются стандартными, и их поведение определяется спецификацией. В большинстве случаев вам нужен фильтр.

Клапаны должны использоваться только для функциональных возможностей, которые требуют доступа к API-интерфейсам native-tomcat. Это довольно редко.


Не совсем верно. С помощью фильтров вы можете воздействовать на некоторые части приложений, движков или хостов с помощью url-шаблона. Клапаны влияют только на все части приложения, двигатели или хост. Клапаны не имеют шаблона url. Это все. Извините за мой английский. Надеюсь, это решило ваши вопросы.

licensed under cc by-sa 3.0 with attribution.