java - Spring MVC 将 URL 一对一映射到 .HTML,而不暴露路径

标签 java spring spring-mvc servlets spring-boot

我在不提供任何 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 文件。

Related post here

关于java - Spring MVC 将 URL 一对一映射到 .HTML,而不暴露路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29379234/

相关文章:

java - 使用 Spring Boot 将 zip 文件从应用程序资源文件夹复制到目标

java - Spring ControllerAdvice 不会因某些异常而触发其他异常

java - Springs CustomDateEditor 引诱犯错误?

java - 检查对象是否仍绑定(bind)到 NameService (tnameserv)

java - IllegalArgumentException:文件包含路径分隔符 Android

java - GUI 使用 JFrame 和 JPanel 绘制自定义形状

java - 一个集合中的spring data jpa查询值

java - 从 Spring boot 加载多个 Angular 项目

spring-mvc - Spring mockMvc 在使用 ExceptionHandler 时抛出错误

java - 在 Java 中将非常大的数据输出到标准输出的最快方法