Где место static css файл в проекте spring -boot
В моем текущем проекте spring -boot мои представления имеют следующую строку:
<link href="signin.css" rel="stylesheet"/>
для ссылки на статический файл css. Когда я запускаю проект и получаю доступ к одному из представлений, ссылающихся на этот файл, я получаю 404 не найденную ошибку или 403 несанкционированную ошибку, в зависимости от того, где я помещаю файл внутри проекта.
Я пробую это до сих пор:
src/main/resources/static/css (with this, I use css/signin.css instead of signin.css)
src/main/resources/templates/static/css (with this, I use css/signin.css instead of signin.css)
src/src/main/resources/templates/acesso (same folder of the html file)
какое место следует хранить в этом типе файлов?
Ответы
Ответ 1
Любое место ниже src/main/resources/static
является подходящим местом для статического контента, такого как CSS, JavaScript и изображения. Статический каталог обслуживается от /
. Например, src/main/resources/static/signin.css
будет обслуживаться от /signin.css
, тогда как src/main/resources/static/css/signin.css
будет обслуживаться с /css/signin.css
.
Папка src/main/resources/templates
предназначена для просмотра шаблонов, которые будут преобразованы в HTML с помощью механизма шаблонов, таких как Thymeleaf, Freemarker или Velocity и т.д. Вы не должны размещать статический контент в этом каталоге.
Также убедитесь, что вы не использовали @EnableWebMvc
в своем приложении, так как это отключит Spring Автонастройка загрузки Spring MVC.
Ответ 2
Я обнаружил, что если я поставлю свой signin.css под src/main/resources/META-INF/resources/static/css/signin.css, тогда я мог бы получить к нему доступ, используя /css/signin.css
Не знаю, почему.
Ответ 3
В моем случае для ссылки на файлы внутри css и js-папок, например:
<script src="js/bootstrap.min.js"></script>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/carousel.css" rel="stylesheet">
Мне пришлось поместить папки в папку webapp.
У меня есть следующая структура папок:
Myapp
-src
-main
-java
-resources
-static
-templates
-webapp
-resources
-WEB-INF
Я имею в виду, если бы я разместил папки css и js в папке ресурсов (в основном), это было бы:
<link href="../resources/css/carousel.css" rel="stylesheet">
<link href="../resources/css/bootstrap.min.css" rel="stylesheet">
<script src="../resources/js/bootstrap.min.js"></script>
Если я поместил их в статическую папку (под ресурсами), это не сработает.
Ответ 4
Отключение @EnableWebMvc помогло мне решить проблему.