【问题标题】:How can I filter all except requests app engine dev console in web.xml如何在 web.xml 中过滤除请求应用程序引擎开发控制台之外的所有内容
【发布时间】:2026-01-11 01:10:02
【问题描述】:
我想过滤对我的 jersey servlet 的所有请求,所以我这样做:
<filter-mapping>
<filter-name>jersey</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
不幸的是,这有捕获开发控制台 (http://localhost:8888/_ah/admin) 的副作用
有没有办法可以从过滤器中排除匹配“/_ah/*”的路径?
或者也许是实现相同目标的更好方法?
【问题讨论】:
标签:
java
google-app-engine
jersey
servlet-filters
web.xml
【解决方案1】:
感谢@adarshr 的建议,我开始考虑扩展 Jersey 过滤器 servlet,以便我可以跳过某些路径。就在那时我意识到它已经支持作为初始化参数忽略的路径。
<init-param>
<param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
<param-value>/(js|css|(WEB-INF/jsp)|_ah)/.*</param-value>
</init-param>
(我什至已经在从某个地方粘贴代码而没有阅读它之后使用它!)
【解决方案2】:
我建议有一个 servlet,您可以使用它来配置所有过滤器映射。因此 servlet 将处理所有查询并相应地重新路由它们,因为 web.xml 不允许正则表达式映射。
我们使用 Google Guice 的 guiceServlet 来做同样的事情:
然后在configureServlets 中我们执行以下操作:
serveRegex("/(?!_ah).*").with(JerseyGateway.class);
关于这个话题有很多建议你可以看看here。