如何在Jetty的/*上映射servlet过滤器



我有一个servlet过滤器,我想把它映射到Jetty中的http://127.0.0.1:8888/。我已经把一个servlet过滤器映射与url模式/*。但是,不会调用筛选器。我还尝试了/映射。它也不起作用。这是如何造成的,我该如何解决?

如果您将war命名为root.war,它将被部署到根/上下文

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 web-app部署文档提到,wep-app可以打包为root.war,以具有根上下文/

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

之前的那个

正如在其他答案中提到的,您必须将应用程序作为根部署。

你可以选择在$JETTY_HOME/webapps下创建一个名为root的目录,并将你的web应用程序内容复制到$JETTY_HOME/webapps/root

最新更新