Embedded Jetty的静态内容路径

时间:2015-04-08 20:16:09

标签: java jetty embedded-jetty

我使用嵌入式Jetty来提供来自" public"的静态内容。我项目中的文件夹:

    Server server = new Server(9999);
    ServletContextHandler context = new ServletContextHandler();
    context.setContextPath("/");

    ServletHolder staticHolder = new ServletHolder(new DefaultServlet());
    staticHolder.setInitParameter("resourceBase", "./public");
    context.addServlet(staticHolder, "/*");

    server.setHandler(context);
    server.start();
    server.join();

哪个工作正常。但是,如果我改变

    context.addServlet(staticHolder, "/*");

   context.addServlet(staticHolder, "/ui/*");

   context.addServlet(staticHolder, "/ui");

或" / *"以外的任何其他内容我得到了404.基本上我可以在http://127.0.0.1:9999/index.html看到我的索引页面,我想将其更改为http://127.0.0.1:9999/ui/index.html

由于

2 个答案:

答案 0 :(得分:0)

发布在这里:

Serving static files from alternate path in embedded Jetty

我需要添加:

staticHolder.setInitParameter("pathInfoOnly", "true");

允许我修改路径并使其行为正确:

context.addServlet(staticHolder, "/ui/*");

允许访问http://127.0.0.1:9999/ui/index.html

处的静态内容

谢谢!

答案 1 :(得分:0)

很棒的答案Avalanche。 此外,如果您提供静态内容,则应添加
staticHolder.setInitParameter("useFileMappedBuffer", "true"); 避免Locked Files on Windows