Statische Dateien mit integriertem Steg bereitstellen
Ich versuche, eine einfache Demo-App mit eingebettetem Jetty zu erstellen, die statische Dateien aus einem "html" -Verzeichnis bereitstellt, das ein Unterverzeichnis des aktuellen Arbeitsverzeichnisses ist. Die Idee ist, dass das Verzeichnis mit dem Demo-Jar und dem Inhalt an einen neuen Ort verschoben werden kann und weiterhin funktioniert.
Ich habe versucht, Variationen der folgenden, aber ich bekomme immer 404s.
<code>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(); </code>
Aktualisieren: Hier ist eine Lösung, wie im Jetty-Tutorial dokumentiert. Wie in der richtigen Antwort erwähnt, wird a verwendetResourceHandler
anstelle einerServletContextHandler
:
<code> 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(); </code>