2

我想过滤对我的球衣 servlet 的所有请求,所以我这样做:

<filter-mapping>
   <filter-name>jersey</filter-name>
   <url-pattern>*</url-pattern>
</filter-mapping>

不幸的是,这有捕获开发控制台的副作用(http://localhost:8888/_ah/admin)

有没有办法可以从过滤器中排除匹配“/_ah/*”的路径?

或者也许是实现相同目标的更好方法?

4

2 回答 2

4

感谢@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>

(我什至已经在从某个地方粘贴代码而没有阅读它之后使用它!)

于 2012-05-17T11:16:30.933 回答
1

我建议有一个 servlet,您可以使用它来配置所有过滤器映射。因此 servlet 将处理所有查询并相应地重新路由它们,因为 web.xml 不允许正则表达式映射。

我们使用 Google Guice 的 guiceServlet 来做同样的事情:

然后在configureServlets我们执行以下操作:

  serveRegex("/(?!_ah).*").with(JerseyGateway.class);

您可以在此处查看有关该主题的许多建议。

于 2012-05-17T11:08:19.083 回答