#java #spring #spring-boot #static-files
#java #весна #весенняя загрузка #статические файлы
Вопрос:
У меня есть простое веб-приложение для начальной загрузки Spring. Я хочу обслуживать несколько статических HTML-файлов.
Я знаю, что я мог бы обслуживать статические файлы с помощью Spring Boot, просто поместив их в /static
подкаталог my src/main/resources
.
Когда я создаю файл (например) /static/docs/index.html
, тогда я мог бы получить к нему доступ через http://localhost:8080/docs/index.html
.
Чего я хочу добиться, так это получить доступ к этому файлу просто с http://localgost:8080/docs
помощью where index.html
, который неявно добавляется Spring.
Краткие сведения:
Мне нужно обслуживать статические файлы /static/{path}/index.html
в ресурсах через localhost:8080/{path}
path.
Я знаю, что я мог бы вручную создавать сопоставления в контроллерах, но когда нужно обслуживать много файлов, это становится раздражающим.
Комментарии:
1. Создать один контроллер, который автоматически сопоставляет их все?
2. Вы нашли способ это сделать?
3. @geschema нет, к сожалению, нет.
Ответ №1:
Это будет работать
@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();
}
}
Комментарии:
1. спасибо за ваш ответ, но для этого все равно требуется создать сопоставление для каждого пути.
2. или вы можете получить все каталоги из статической папки и динамически вызывать эту строку для каждого каталога, если хотите иметь постоянное решение. Это неприятно, но эффективно.