我使用嵌入式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。
由于
答案 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