我正在尝试构建一个带有嵌入式 Jetty 的简单演示应用程序,该应用程序从“html”目录(当前工作目录的子目录)提供静态文件。这个想法是,包含演示 jar 和内容的目录可以移动到新位置并且仍然可以工作。
我已经尝试过以下变体,但我不断收到 404。
ServletContextHandler context =
new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.getInitParams().put(
"org.eclipse.jetty.servlet.Default.resourceBase", "html");
context.addServlet(new ServletHolder(new DefaultServlet()), "/html");
Server jetty = new Server(8080);
jetty.setHandler(context);
jetty.start();
Update:这是 Jetty 教程中记录的解决方案。正如正确答案中提到的,它使用ResourceHandler
代替ServletContextHandler
:
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(8080);
server.addConnector(connector);
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setWelcomeFiles(new String[]{ "index.html" });
resource_handler.setResourceBase(".");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() });
server.setHandler(handlers);
server.start();
server.join();
Use a ResourceHandler https://www.eclipse.org/jetty/javadoc/9.4.7.v20170914/org/eclipse/jetty/server/handler/ResourceHandler.html代替ServletContextHandler https://www.eclipse.org/jetty/javadoc/9.4.7.v20170914/org/eclipse/jetty/servlet/ServletContextHandler.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)