阀门和过滤器之间的区别

时间:2011-04-04 10:54:21

标签: tomcat servlets

有人可以解释servlet过滤器和tomcat阀之间的区别。使用一个优于另一个的优势是什么?

3 个答案:

答案 0 :(得分:42)

来自Tomcat文档:

  

Valve元素表示将插入相关Catalina容器的请求处理管道中的组件

servlet过滤器用于完全相同的目的,但阀门是Tomcat的特定类,与Tomcat infrastructure / API紧密耦合。另一方面,servlet API由所有兼容的Web容器实现。也就是说,阀门不适用于例如Jetty,它有不同的API,而servlet过滤器将。

另一个重要的区别是阀门正在处理容器级别(拦截所有应用程序/请求),而servlet过滤器只拦截给定应用程序的所有请求。因此,如果要实现服务器范围的拦截器,则必须使用阀门。

答案 1 :(得分:10)

阀门是特定于tomcat的。过滤器是标准的,其行为由规范定义。在大多数情况下,您需要一个过滤器。

Valves仅用于需要访问native-tomcat API的功能。这是相当罕见的。

答案 2 :(得分:2)

不完全正确。使用过滤器,您可以使用url-pattern影响某些应用程序,引擎或主机。阀门仅影响应用程序,引擎或主机的所有部分。阀门没有网址模式。就这样。对不起我的英语不好。我希望这能解决你的问题。