У меня есть веб-приложение на основе JSP/Servlet, которое использует Maven и не было реализовано с использованием Spring MVC. Я пытаюсь развернуть это во встроенном контейнере tomcat, используя webapp-runner.
Проблема в том, что css/js и другие ссылки на активы из JSP не загружают эти ресурсы. Когда я запускаю приложение, используя java -jar target/dependency/webapp-runner.jar target/myapp.war
, я могу получить доступ к странице, используя http://localhost:8080/index.jsp
. Однако ресурсы отсутствуют в http://localhost:8080/assets/css/sample-css.css
(пример ссылки).
Обратите внимание, что вообще нет «веб-контекста», который, я думаю, является способом работы встроенного кота. Любые идеи о том, что может быть не так?
Это моя структура каталогов:
-- src
--- main
-- java
--- <servlet related classes in package folder>
-- webapp
-- WEB-INF
-- web.xml
-- assets
-- js
-- css
-- fonts
-- img
-- index.jsp
Когда я упаковываю это приложение, WAR, присутствующий в <project-dir>/target
, выглядит так.
-- META-INF
-- WEB-INF
-- web.xml
-- assets
-- js
-- css
-- fonts
-- img
-- index.jsp
Это соответствующая часть pom.xml:
...
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
<warName>${project.artifactId}</warName>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
...
Вот как я получаю доступ к ресурсам на странице JSP. Я пробовал несколько стилей, но ничего не работает:
<link type="text/css" href="${pageContext.request.contextPath}/assets/css/bootstrap.min.css" rel="stylesheet">
<!-- Another way -->
<link type="text/css" href="assets/css/bootstrap.min.css" rel="stylesheet">
Я ссылался на Как связать файл веб-ресурса из /main/resources в JSP? и ресурсы, на которые он указывает.