使用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.

感谢

此处发布:

在嵌入式Jetty 中从备用路径提供静态文件

我需要添加:

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

这使我能够修改路径并使其正确运行:

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

允许访问静态内容http://127.0.0.1:9999/ui/index.html

谢谢!

雪崩的伟大答案。此外,如果您提供静态内容,则应添加
staticHolder.setInitParameter("useFileMappedBuffer", "true");以避免Windows 上的锁定文件

最新更新