【发布时间】:2014-11-10 17:12:52
【问题描述】:
是否可以在 Jetty 9.x 中以编程方式启用特定路径的目录浏览(如果“是”——如何)?
【问题讨论】:
是否可以在 Jetty 9.x 中以编程方式启用特定路径的目录浏览(如果“是”——如何)?
【问题讨论】:
可以通过为静态内容创建 ResourceHandler 并将 setDirectoriesListed 设置为 true 或显式创建并配置 DefaultServlet 来以编程方式创建启用目录浏览的 Jetty 实例。下面是创建和配置ResourceHandler 的示例。
ResourceHandler staticResource = new ResourceHandler();
staticResource.setDirectoriesListed(true);
staticResource.setWelcomeFiles(new String[] { "index.html" });
staticResource.setResourceBase("/path/to/your/files");
ContextHandler staticContextHandler = new ContextHandler();
staticContextHandler.setContextPath("/*");
staticContextHandler.setHandler(staticResource);
Server server = new Server(8080);
server.setHandler(staticContextHandler);
【讨论】:
ResourceHandler 做什么?
ResourceHandler 放入ContextHandler,并将ContextHandler 放入Server(或将其添加至ContextHandlerCollection)。
web.xml,我将如何去做?
如果您想通过 Web 应用程序部署描述符 (web.xml) 的配置(不是以编程方式)配置目录浏览,则需要配置 DefaultServlet。这是一个例子:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
<init-param>
<param-name>resourceBase</param-name>
<param-value>/path/to/your/static/files</param-value>
</init-param>
<init-param>
<param-name>dirAllowed</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/path/to/serve/content/on/*</url-pattern>
</servlet-mapping>
有关详细信息和其他配置选项,请参阅 http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/servlet/DefaultServlet.html。
【讨论】: