我有一个基于 JSP/Servlet 的 Web 应用程序,它使用 Maven,但尚未使用 Spring MVC 实现。我正在尝试使用webapp-runner将其部署到嵌入式 tomcat 容器。
问题是来自 JSP 的 css/js 和其他资产引用不加载这些资源。当我使用 启动应用程序时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">
我已经提到如何在 JSP 中从 /main/resources 链接 Web 资源文件?以及它指向的资源。