使用 Spring 引导隐式服务 index.html
Serve index.html implicitly with Spring Boot
我有一个简单的 Spring Boot Starter Web 应用程序。
我想提供几个静态 html 文件。
我知道我可以使用 Spring Boot 提供静态文件,只需简单地将然后放到我的 src/main/resources
.
的 /static
子目录中
当我创建文件(例如)/static/docs/index.html
时,我可以通过 http://localhost:8080/docs/index.html
.
访问它
我想要实现的是仅使用 http://localgost:8080/docs
访问此文件,其中 index.html
由 Spring.
隐式添加
总结:
我需要通过 localhost:8080/{path}
路径在资源 /static/{path}/index.html
中提供静态文件。
我知道我可以在控制器中手动创建映射,但是当有很多文件要服务时它变得很烦人。
这会起作用
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/docs").setViewName("forward:/docs/index.html");
}
}
或者所有静态子目录的可能解决方案(丑陋的版本)
public void addViewControllers(ViewControllerRegistry registry) {
File file;
try {
file = new ClassPathResource("static").getFile();
String[] names = file.list();
for(String name : names)
{
if (new File(file.getAbsolutePath() + "/" + name).isDirectory())
{
registry.addViewController("/" + name).setViewName("forward:/" + name +"/index.html");
}
}
} catch (IOException e) {
// TODO: handle error
e.printStackTrace();
}
}
我有一个简单的 Spring Boot Starter Web 应用程序。 我想提供几个静态 html 文件。
我知道我可以使用 Spring Boot 提供静态文件,只需简单地将然后放到我的 src/main/resources
.
/static
子目录中
当我创建文件(例如)/static/docs/index.html
时,我可以通过 http://localhost:8080/docs/index.html
.
我想要实现的是仅使用 http://localgost:8080/docs
访问此文件,其中 index.html
由 Spring.
总结:
我需要通过 localhost:8080/{path}
路径在资源 /static/{path}/index.html
中提供静态文件。
我知道我可以在控制器中手动创建映射,但是当有很多文件要服务时它变得很烦人。
这会起作用
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/docs").setViewName("forward:/docs/index.html");
}
}
或者所有静态子目录的可能解决方案(丑陋的版本)
public void addViewControllers(ViewControllerRegistry registry) {
File file;
try {
file = new ClassPathResource("static").getFile();
String[] names = file.list();
for(String name : names)
{
if (new File(file.getAbsolutePath() + "/" + name).isDirectory())
{
registry.addViewController("/" + name).setViewName("forward:/" + name +"/index.html");
}
}
} catch (IOException e) {
// TODO: handle error
e.printStackTrace();
}
}