Maven を使用し、Spring MVC を使用して実装されていない JSP/サーブレット ベースの Web アプリケーションがあります。webapp-runnerを使用して、組み込みの tomcat コンテナーにデプロイしようとしています。
問題は、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
(例参照)。
私が考えている「webcontext」がまったくないことに注意してください。これは、組み込みのTomcatの動作方法です。何が間違っている可能性がありますか?
これは私のディレクトリ構造です:
-- 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">
How to link a web resource file from /main/resources in JSP? を参照しました。およびそれが指すリソース。