Как файлы webjars разрешаются как путь

Я использую spring mvc и spring boot для разработки веб-приложения, и у меня есть вопрос относительно webjars. Чтобы добавить путь к веб-банке в тимелеафе, мы делаем, например, следующее: th:href="@{/webjars/bootstrap/...}"

Теперь, когда я просматривал исходный код страницы после разрешения tomcat, фактический атрибут href в теге ссылки был: href="/webjars/bootstrap/..."

Но глядя на структуру каталогов веб-приложения в tomcat, таких файлов нет (не удалось найти bootstrap.min.js внутри 3.3.6 внутри... пока мы не достигнем папки webjars).. вместо файлов находятся внутри файла jar в папке lib, которая находится далеко от файла html в структуре каталогов.. так как же это было разрешено? Разве атрибут href не должен ссылаться на файлы на основе текущего местоположения каталога html-файла?


person M.R.M    schedule 18.02.2016    source источник


Ответы (1)


WebJars используют автоматическую обработку статических ресурсов в Tomcat. В Tomcat/Servlet 3 файлы в CLASSPATH в каталоге META-INF/resources автоматически отображаются как статические ресурсы в контексте сервлета. Итак, если у вас есть jar в CLASSPATH, который содержит META-INF/resources/foo.txt, и ваше веб-приложение работает в корневом контексте, тогда этот файл будет автоматически доступен по адресу: http://localhost:8080/foo.txt

Поскольку Bootstrap WebJar имеет такой файл, как:
META-INF/resources/webjars/bootstrap/3.3.6/js/bootstrap.min.js
Он доступен по адресу:
http://localhost:8080/webjars/bootstrap/3.3.6/js/bootstrap.min.js

person James Ward    schedule 18.02.2016
comment
Как мне получить bootstrap css, если мое веб-приложение похоже на localhost:8080/testexample/foo.txt. Я использую ‹link rel=stylesheet type=text/css href=webjars/bootstrap/3.3.7/css/bootstrap.min.css /›, и это не работает. - person want2learn; 02.10.2017
comment
Какой сервер вы используете? Вы добавили WebJar в свой путь сборки/класса? - person James Ward; 02.10.2017
comment
Да, у меня есть. Итак, моя проблема заключается в том, что если я использую localhost:8080/foo.txt, бутстрап загружается нормально. Но если у меня есть что-то вроде localhost:8080/testexample/foo.txt, это не работает . - person want2learn; 02.10.2017
comment
Может нужен абсолютный путь? - person James Ward; 02.10.2017