如何在Jetty中的/ *上映射servletfilter?

我有一个servletfilter,我想在Jetty中映射到http://127.0.0.1:8888/ 。 我已经使用url pattern /*设置了servletfilter映射。 但是,不会调用filter。 我也尝试过/ mapping。 它也不起作用。 这是怎么造成的,如何解决?

如果你将war root.war ,它将被部署到root / context。

http://wiki.eclipse.org/Jetty/Howto/Deploy_Web_Applications

您可以将请求从“/”重定向到“/ urlToRedirect”并通过特殊的servlet处理“/ urlToRedirect”。 像在例子中:

 public static void main(String[] args) throws Exception { Servlet frontend = new Frontend(); Server server = new Server(8080); ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.addServlet(new ServletHolder(frontend), "/index"); context.addServlet(new ServletHolder(frontend), "/auth"); ResourceHandler resource_handler = new ResourceHandler(); resource_handler.setDirectoriesListed(false); resource_handler.setResourceBase("static"); RewriteHandler rewriteHandler = new RewriteHandler(); rewriteHandler.setRewriteRequestURI(true); rewriteHandler.setRewritePathInfo(true); rewriteHandler.setOriginalPathAttribute("requestedPath"); RedirectRegexRule rule = new RedirectRegexRule(); rule.setRegex("/"); rule.setReplacement("/index"); rewriteHandler.addRule(rule); HandlerList handlers = new HandlerList(); handlers.setHandlers(new Handler[]{rewriteHandler, resource_handler, context}); server.setHandler(handlers); server.start(); server.join(); } 

Jetty网络应用程序部署文档提到wep-app可以打包为root.war以具有根上下文/

jetty中的每个应用程序都部署到它的上下文中 – 这意味着它在斜杠之后有一些部分 – 即http://127.0.0.1:8888/context/ – 你的servlet映射实际上是最后一个斜杠 – 而不是上下文之前的斜杠

如其他答案中所述,您必须将应用程序部署为root.war以克服此问题。

(可选)您可以在$JETTY_HOME/webapps下创建名为root的目录,并将您的Web应用程序内容复制到$JETTY_HOME/webapps/root