访问Web应用程序的静态资源

时间:2011-03-29 13:55:37

标签: java web-applications maven-2 wicket

我刚刚使用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文件。

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

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

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

5 个答案:

答案 0 :(得分:7)

与网络相关的资源应放在src/main/webapp

答案 1 :(得分:3)

您的目录结构应为:

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

你的标记应该是:

<wicket:link><script src="scripts/script.js"></script></wicket:link>

答案 2 :(得分: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

答案 3 :(得分:2)

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

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

答案 4 :(得分:-1)

没有s的拼写资源?

reources/