我在不提供任何 JSP 的 Web 服务上使用带有 Boot 1.2 的 Spring 4.1.5。我不想添加 JSP servlet,但我希望它提供一个金丝雀页面,以更漂亮的 html 类型格式显示将在 /manage/health
端点提供的信息。
我在 webapp/canary/canary.html
中有一个文件,我想从以下网址提供该文件:www.mywebservice.com:9343/canary
,确切地说像这样,不是 canary.html
我尝试这样做:
@Configuration
public class CanaryConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/canary")
.addResourceLocations("/canary/canary.html");
}
}
但是这不起作用。
它期望处理程序提供文件名。所以换句话说,位置应该类似于: /canary/
处理程序类似于:/canary/**
有了这个,URL www.mywebservice.com:9343/canary/canary.html
就可以发挥作用了。
但是,我希望 URL 将 www.mywebservice.com:9343/canary
解析为 webapp/canary/canary.html
,而无需我输入 html。
这在 jsp servlet 中非常简单,因为您可以设置后缀等...
我查看了 ResourceResolver
,但我不明白如何将其链接到我当前的配置中。
它看起来像我想要的:
Provides mechanisms for resolving an incoming request to an actual Resource and for obtaining the public URL path that clients should use when requesting the resource.
参见:ResourceResolver Documentation
任何帮助都会非常有益。
另外我非常清楚我可以将html放在resources/static和其他几个自动配置的地方。这总是需要输入 .html,在这种情况下这不是我想要的,所以这是行不通的。谢谢!
最佳答案
您可以使用 View Controller 来做到这一点。这是它的一个示例。希望这会有所帮助。
public class AppConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/canary").setViewName("/canary/canary.html");
}
}
注意:如果您使用 tomcat,您可能需要配置 jsp servlet 来服务器 html 文件。
关于java - Spring MVC 将 URL 一对一映射到 .HTML,而不暴露路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29379234/