我想过滤所有对我的球衣servlet的请求,所以我这样做:
<filter-mapping>
<filter-name>jersey</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
不幸的是,这有捕捉开发控制台的副作用(http:// localhost:8888 / _ah / admin)
有没有办法可以从过滤器中排除匹配“/ _ah / *”的路径?
或许是一种更好的方法来实现同样的目标?
答案 0 :(得分:4)
感谢@adarshr的建议,我开始考虑扩展Jersey过滤器servlet,以便我可以跳过某些路径。然后我意识到它已经支持忽略作为init参数的路径。
<init-param>
<param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
<param-value>/(js|css|(WEB-INF/jsp)|_ah)/.*</param-value>
</init-param>
(在没有阅读它的情况下从某个地方粘贴代码后我甚至已经使用它了!)
答案 1 :(得分:1)
我建议有一个servlet,您可以使用它来配置所有过滤器映射。因此,servlet将处理所有查询并相应地重新路由它们,因为web.xml不允许正则表达式映射。
我们使用Google Guice的guiceServlet做同样的事情:
然后在configureServlets
中我们执行以下操作:
serveRegex("/(?!_ah).*").with(JerseyGateway.class);
有关此主题的一些建议,您可以查看here。