【问题标题】:Accessing a web application's static resources访问 Web 应用程序的静态资源
【发布时间】:2011-07-25 07:51:08
【问题描述】:

我刚刚使用Wicked 框架构建了一个非常简单的Java Web 应用程序。目前项目的布局是:

src/
    main/
        java/
            net/myapp/
                Homepage.java
                Homepage.html
        reources/
            scripts/
                script.js

Homepage.html 文件中,我正在尝试加载 JavaScript 文件:

<script src="scripts/script.js"></script>

我部署了应用程序,但浏览器没有找到 JavaScript 文件。

WAR 文件正在使用 maven-war-plugin 打包。我查看了 WAR 文件,我看到了以下布局:

WEB-INF/
    classes/
        net/myapp/
            Homepage.class
            Homepage.html
        scripts/
            script.js

我做错了什么?我错过了什么?

【问题讨论】:

    标签: java web-applications maven-2 wicket


    【解决方案1】:

    不带 s 的拼写资源?

    reources/
    

    【讨论】:

      【解决方案2】:

      虽然其他答案总体上是正确的,但它们并没有完全考虑到 Wicket。使用 Wicket,您可以在类路径上拥有资源,并且在某些情况下它们比静态文件更好。

      您可以使用 Application.mountSharedResource() 将 url 分配给共享资源,该资源可以来自任何地方,包括您的类路径。

      【讨论】:

        【解决方案3】:

        WEB-INF 文件夹后面的资源不公开。如果 Homepage.class 转发到 Homepage.html,您应该会看到该文件。但是在 HTML 页面中,您可以参考不公开的 javascript 文件。您需要将脚本移到 WEB-INF 之外。结构应该是这样的

        WEB-INF /
             classes /
             net/myapp/
                  Homepage.class
                  Homepage.html
        scripts/
              scripts.js
        

        这样在html文件中引用到

        <script src="scripts/script.js"></script>
        

        将正常工作。当 HTML 页面在用户端呈现时,他们会进行回调以获取 JavaScript 资源。此时,文件需要可见。

        您的构建脚本或应用布局的更新应该会为您解决这个问题。

        编辑:请参阅 Bozho 的回答,它将修复 Maven 的构建。见This link for Maven

        【讨论】:

          【解决方案4】:

          你的目录结构应该是:

          WEB-INF/ 班级/ 网/myapp/ 主页.class 主页.html 网络/myapp/脚本/ 脚本.js

          你的标记应该是:

          【讨论】:

          • 如果您希望脚本嵌入到 java 包中,这也可以。
          • 谁想在类目录中有非程序代码?在我看来,公共的 javascript 文件不应该放在私有服务器代码中。
          【解决方案5】:

          网页相关资源请放在src/main/webapp

          【讨论】:

          • 是的,这是正确的,请参阅maven.apache.org/guides/introduction/…
          • @Sean 它说 src/main/webapp 应该包含 Web 应用程序源。这是否意味着 html/java 或 javascript 文件? (顺便说一句,这是由检票口原型创建的结构)图像呢?这些在 /src/main/resources 中吗?
          • @Mario Duarte - 图片也转到 /webapp。除非您想以自定义方式提供资源(例如通过特殊的 servlet)。
          猜你喜欢
          • 1970-01-01
          • 2019-04-30
          • 1970-01-01
          • 1970-01-01
          • 2013-12-09
          • 1970-01-01
          • 2012-11-30
          • 2017-12-11
          • 2012-11-05
          相关资源
          最近更新 更多