【问题标题】: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

    【讨论】:

      最近更新 更多