Java 为嵌入式Jetty中的多个路径添加servlet过滤器

Java 为嵌入式Jetty中的多个路径添加servlet过滤器,java,servlets,jetty,servlet-filters,embedded-jetty,Java,Servlets,Jetty,Servlet Filters,Embedded Jetty,我正在创建一个servlet过滤器,它应该只处理对应用程序中特定路径的请求 我可以轻松地向ServletContextHandler添加筛选器,例如: FilterHolder holder = new FilterHolder(new MyFilter()); holder.setInitParameter("param", "a"); contextHandler.addFilter(holder, "/x", EnumSet.allOf(DispatcherType.class)); 但

我正在创建一个servlet过滤器,它应该只处理对应用程序中特定路径的请求

我可以轻松地向ServletContextHandler添加筛选器,例如:

FilterHolder holder = new FilterHolder(new MyFilter());
holder.setInitParameter("param", "a");
contextHandler.addFilter(holder, "/x", EnumSet.allOf(DispatcherType.class));
但是,如何向该筛选器添加更多路径? 我希望它也能处理对
/y
的请求

我似乎找不到任何简单正确的方法来做这件事。 使用web.xml,我只需在过滤器映射下定义多个
标记

使用Jetty版本9.3.0.v20150612.

只需多次添加过滤器(通过其支架)

FilterHolder holder=new FilterHolder(new MyFilter());
holder.setName(“我的过滤器”);
holder.setInitParameter(“参数”、“a”);
addFilter(holder,“/x”,EnumSet.allOf(DispatcherType.class));
addFilter(holder,“*.y”,EnumSet.allOf(DispatcherType.class));
addFilter(holder,“/z/*”,EnumSet.allOf(DispatcherType.class));
替代技术(重用addFilter生成的保持架)

Enum dispatchers=EnumSet.allOf(DispatcherType.class);
FilterHolder holder=contextHandler.addFilter(MyFilter.class,“/x”,dispatchers);
holder.setInitParameter(“参数”、“a”);
contextHandler.addFilter(持有者“*.y”,调度员);
addFilter(持有者,“/z/*”,dispatchers);

我试过了,但是筛选器的init方法被多次调用,这似乎是错误的。是的,您将看到多次“filter.init()”调用。但是在每次调用中都是相同的'FilterConfig.getName()'和'FilterConfig.getServletContext()'。有什么方法可以做到这一点吗?因为我有大约50个端点需要它,还有大约5个不需要。。。难道没有白名单机制而不是黑名单机制吗?@ThomasStubbe这应该是stackoverflow中的一个新问题。不,这是标准的Servlet机制。