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

时间:2011-11-21 22:04:24

标签: java servlets jetty servlet-filters web.xml

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

5 个答案:

答案 0 :(得分:3)

如果您将战争命名为root.war,则会将其部署到根/上下文。

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

答案 1 :(得分:2)

您可以将请求从“/”重定向到“/ 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();
}

答案 2 :(得分:0)

Jetty web-app deployment doc提到wep-app可以打包为root.war以具有根上下文/

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

您可以选择在root下创建名称为$JETTY_HOME/webapps的目录,并将您的网络应用内容复制到$JETTY_HOME/webapps/root