gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:04:17 24 4
gpt4 key购买 nike

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

我可以轻松地向 ServletContextHandler 添加过滤器,例如如下所示:

FilterHolder holder = new FilterHolder(new MyFilter());
holder.setInitParameter("param", "a");
contextHandler.addFilter(holder, "/x", EnumSet.allOf(DispatcherType.class));

但是我怎样才能向这个过滤器添加更多路径呢?我希望它能够处理 /y 的请求也是如此。

我似乎找不到任何简单且正确的方法来做到这一点。使用 web.xml 我只需定义多个 <url-pattern>过滤器映射下的标签。

使用 Jetty 版本 9.3.0.v20150612。

最佳答案

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

FilterHolder holder = new FilterHolder(new MyFilter());
holder.setName("my-filter");
holder.setInitParameter("param", "a");
contextHandler.addFilter(holder, "/x", EnumSet.allOf(DispatcherType.class));
contextHandler.addFilter(holder, "*.y", EnumSet.allOf(DispatcherType.class));
contextHandler.addFilter(holder, "/z/*", EnumSet.allOf(DispatcherType.class));

替代技术(重用从addFilter生成的持有者)

Enum<DispatcherType> dispatchers = EnumSet.allOf(DispatcherType.class);
FilterHolder holder = contextHandler.addFilter(MyFilter.class, "/x", dispatchers);
holder.setInitParameter("param", "a");
contextHandler.addFilter(holder, "*.y", dispatchers);
contextHandler.addFilter(holder, "/z/*", dispatchers);

关于java - 为嵌入式 Jetty 中的多个路径添加 servlet 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31380703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com