0

我有一个基于 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 资源文件?以及它指向的资源。

4

1 回答 1

0

对于以前遇到过同样问题的任何人,他都是我解决它的方法(暂时):我已经从 Servlet 3.1 转移到 2.5 并且解决了它。我不明白为什么,但现在可以了。

于 2015-08-06T12:10:11.580 回答