使用通配符的Undertow路由格式



我的要求是提供"index.html",而不管请求中设置了什么路由。我已经参考了underflow的路由模板格式,但没有用。它似乎对人们有效。处理程序看起来像

PathHandler path1 = Handlers.path()
.addPrefixPath("/*", new ResourceHandler(new FileResourceManager(new File(System.getProperty("user.dir")+"ed.jpg"), 100 * 1024)).setWelcomeFiles("index.html") );

并且像一样添加处理程序

server = Undertow
.builder()
.addHttpListener(serverConfig.getHttpPort(), serverConfig.getHost())
.addAjpListener(serverConfig.getAjpPort(), serverConfig.getHost())
.setHandler(path1)
.build();

我也尝试过使用PathResourceManager。这行不通。该处理程序能够完全匹配没有通配符的路径。似乎只有带有通配符的情况才会失败。

如有任何帮助,我们将不胜感激。

您不希望使用PathHandler

相反,使用ResourceManager直接从自定义处理程序为HTML文件提供服务,如下所示:

ResourceManager rm = new PathResourceManager(Paths.get("/path/to/your/folder"));
Resource r = rm.getResource("index.html");
Undertow.builder()
.addHttpListener(8080, "0.0.0.0")
.setHandler(Handlers.predicate(
ex -> ex.getRequestMethod().equals(Methods.GET),
ex -> r.serve(ex.getResponseSender(), ex, IoCallback.END_EXCHANGE),
ResponseCodeHandler.HANDLE_405)
).build().start();

注意1:我为带有谓词的请求谓词/方法添加了一个简单的检查,只允许GET请求并回退到简单的405响应。

Note2:您可能希望将为HTML文件提供服务的处理程序分派给工作线程。

相关内容

  • 没有找到相关文章

最新更新