как обслуживать контент stati c в springboot 2.2.6? - PullRequest
0 голосов
/ 23 апреля 2020

Я новичок ie в Springboot и пытаюсь отобразить страницу html по пути root (localhost:8080). Для этого я погуглил и прошел -

  1. Пружинный ботинок, не обслуживающий стати c содержимое
  2. https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot
  3. Приложение Spring Boot не обслуживает данные c содержимое
  4. Springboot не обслуживает данные c содержимое

Перепробовал почти все, но ни один из них не работал для меня.

Точная проблема

Без индекса. html Файл внутри любого из ресурсов / (статический / или публичный / или meta-inf / resources) работает нормально и показывает список некоторых весенних данных. Если я создаю файл индекса. html, то выдается ошибка 404, не найденная без аннотации @EnableWebMvc, при использовании @EnableWebMvc отображается список остальных данных Spring. Apis.

Кроме файла index. html, он показывает список API данных Spring в пути root и URL (localhost:8080/test.html), отличный от индекса. html имеет такую ​​же проблему.

Эта проблема имеет Нет эффекта от реализации public class StaticResourceConfiguration implements WebMvcConfigurer с этой конфигурацией.

1 Ответ

1 голос
/ 23 апреля 2020

Начиная с простого инициализатора весенней загрузки

... мы можем поместить файлы stati c (html) в один из:

  • (src / main / resources :)
    • stati c
    • ресурсы
    • publi c
    • META-INF
      • ресурсы

, что приводит к местоположения по умолчанию (путь к классам), настроенные с помощью свойства spring.resources.static-locations.

Они будут отображаться через значение spring.mvc.static-path-pattern -property ( ref ), по умолчанию: /**.

Таким образом, файл stati c index. html в одной из вышеупомянутых папок с конфигурацией по умолчанию будет доступен по адресу:

Соответственно: нет проблем с http://localhost: 8080 / тест. html ...


Оформление заказа в github .

Так что, по крайней мере, ответ на «заголовок вопроса» «Как обслуживать содержимое stati c в springboot 2.2.6?».


Порядок spring.resources.static-locations (индекс. html предпочтительнее из META-INF / resources) также является "приоритетом" местоположений файла stati c (слева направо, первое совпадение выигрывает ).


Когда мы добавляем @EnableWebMvc

... "evertyhing прерывается" (только контекст загружается, но):

WARN ... o.s.web.servlet.PageNotFound             : No mapping for GET /
WARN ... o.s.web.servlet.PageNotFound             : No mapping for GET /index.html
WARN ... o.s.web.servlet.PageNotFound             : No mapping for GET /test.html

.. Пожалуйста, учтите следующее: почему для приложения с пружинной загрузкой не требуется @ EnableWeb Mvc

При использовании "конфигурации не по умолчанию" вам потребуется предоставить более подробную информацию, чтобы найти конкретное c решение.

Но для "newb ie в Springboot": начиная с инициализатора, "значения по умолчанию" звучат оптимально! С этого момента вы можете перенастроить свою конфигурацию на основе рабочей.


И если вам нужно / нужно аннотация @EnableWebMvc по некоторым причинам, это приведет к снова в «предыдущем» поведении / восстановите (2.2.6) стандартную обработку содержимого stati c по умолчанию:

@EnableWebMvc
@SpringBootApplication
public class DemoApplication implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
          .addResourceHandler("/**")
          .addResourceLocations("classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/");

    }

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

(при условии отсутствия конфликтов с существующими обработчиками конфигурации / ресурсов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...