有人可以解释servlet过滤器和tomcat阀之间的区别。使用一个优于另一个的优势是什么?
答案 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影响某些应用程序,引擎或主机。阀门仅影响应用程序,引擎或主机的所有部分。阀门没有网址模式。就这样。对不起我的英语不好。我希望这能解决你的问题。