我使用嵌入式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 上的锁定文件