Spring Boot,静态资源和mime类型配置

我面临无法解决的Spring Boot" title="Spring Boot">Spring Boot配置问题…我正在尝试使用Spring Boot构建HbbTV的HelloWorld示例,因此我需要使用mime-

type =为我的“ index.html”页面提供服务“ application / vnd.hbbtv.xhtml + xml”

我的index.html将作为静态页面访问,例如http://myserver.com/index.html?param=value。

使用以下代码,无论我多么努力,都会得到一个text / html内容类型。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//HbbTV//1.1.1//EN" "http://www.hbbtv.org/dtd/HbbTV-1.1.1.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<title>MyApp HBBTV</title>

<meta http-equiv="content-type" content="Content-Type: application/vnd.hbbtv.xhtml+xml; charset=UTF-8" />

</head>

<body>

...

</body>

</html>

因此,我尝试在@Controller中添加“ home()”终结点以强制使用正确的mime类型,并且可行。

@RestController

public class HbbTVController {

@RequestMapping(value = "/hbbtv", produces = "application/vnd.hbbtv.xhtml+xml")

String home() {

return "someText";

}

...

}

“有效”表示码头服务器为我提供了一个包含测试someText的正确内容类型的html文件。

我的下一个尝试是用@Controller替换@RestController( 相同的配置),并用

替换“ someText”

@Controller

public class HbbTVController {

@RequestMapping(value = "/hbbtv", produces = "application/vnd.hbbtv.xhtml+xml")

String home() {

return "index.html";

}

...

}

好吧,它可以正确地为我的index.html提供服务,但是Content-Type是错误的:text / html而不是application /

vnd.hbbtv.xhtml +

xml。此外,我不想访问myserver.com/hbbtv来获取index.html,而是直接访问myserver.com/index.html。

我该怎么办?

谢谢…

回答:

好吧,最后,我找到了“ Spring Boot兼容解决方案”。与Jamie Birch建议的相同,但通过Spring机制实现。

@Configuration

public class HbbtvMimeMapping implements EmbeddedServletContainerCustomizer {

@Override

public void customize(ConfigurableEmbeddedServletContainer container) {

MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT);

mappings.add("html", "application/vnd.hbbtv.xhtml+xml; charset=utf-8");

mappings.add("xhtml", "application/vnd.hbbtv.xhtml+xml; charset=utf-8");

container.setMimeMappings(mappings);

}

}

@Configuration

public class HbbtvMimeMapping implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {

@Override

public void customize(ConfigurableServletWebServerFactory factory) {

MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT);

mappings.add("html", "application/vnd.hbbtv.xhtml+xml; charset=utf-8");

mappings.add("xhtml", "application/vnd.hbbtv.xhtml+xml; charset=utf-8");

factory.setMimeMappings(mappings);

}

}

以上是 Spring Boot,静态资源和mime类型配置 的全部内容, 来源链接: utcz.com/qa/431886.html

回到顶部