gpt4 book ai didi

java - 如何在嵌入式 Undertow 服务器上启用目录列表和资源服务?

转载 作者:行者123 更新时间:2023-11-30 06:26:04 25 4
gpt4 key购买 nike

undertow documentation site 上列出的示例中,它展示了如何配置 2 个 servlet 及其映射。但我找不到如何配置默认 Servlet 以允许目录列表和资源服务。

DeploymentInfo servletBuilder = Servlets.deployment()
.setClassLoader(ServletServer.class.getClassLoader())
.setContextPath("/myapp")
.setDeploymentName("test.war")
.addServlets(
Servlets.servlet("MessageServlet", MessageServlet.class)
.addInitParam("message", "Hello World")
.addMapping("/*"),
Servlets.servlet("MyServlet", MessageServlet.class)
.addInitParam("message", "MyServlet")
.addMapping("/myservlet"));

DeploymentManager manager = Servlets.defaultContainer().addDeployment(servletBuilder);
manager.deploy();
PathHandler path = Handlers.path(Handlers.redirect("/myapp"))
.addPrefixPath("/myapp", manager.start());

Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(path)
.build();
server.start();

它是一个可运行 jar 中的嵌入式 undertow 服务器。

最佳答案

添加 servlet 时,还要在 servlet 列表中添加“默认” servlet

Servlets.servlet("default", DefaultServlet.class)
.addInitParam(DefaultServlet.DIRECTORY_LISTING, "true")
.addInitParam(DefaultServlet.DEFAULT_ALLOWED, "true")
.addInitParam(DefaultServlet.ALLOW_POST, "false")
.addInitParam(DefaultServlet.RESOLVE_AGAINST_CONTEXT_ROOT, "true")

然后在部署容器之前将其添加到DeploymentInfo

servletBuilder.setResourceManager(new ClassPathResourceManager(App.class.getClassLoader(), "webapp"));

然后,您放入 jar 中打包的 webapp 文件夹中的任何内容都将与部署在任何应用程序服务器中的任何普通 war/webapp 文件夹完全相同。

您可以使用任何名称或文件夹,webapp 只是一个示例。

关于java - 如何在嵌入式 Undertow 服务器上启用目录列表和资源服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47188601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com