Java 访问web应用程序';中国的静态资源

Java 访问web应用程序';中国的静态资源,java,web-applications,maven-2,wicket,Java,Web Applications,Maven 2,Wicket,我刚刚使用该框架构建了一个非常简单的JavaWeb应用程序。本项目目前的布局为: src/ main/ java/ net/myapp/ Homepage.java Homepage.html reources/ scripts/ script.js 在Homepage.html文件中,我试图加载JavaScri

我刚刚使用该框架构建了一个非常简单的JavaWeb应用程序。本项目目前的布局为:

src/
    main/
        java/
            net/myapp/
                Homepage.java
                Homepage.html
        reources/
            scripts/
                script.js
Homepage.html
文件中,我试图加载JavaScript文件:

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

我做错了什么?我缺少什么?

与web相关的资源应该放在
src/main/webapp
目录结构应该是:

WEB-INF/ classes/ net/myapp/ Homepage.class Homepage.html net/myapp/scripts/ script.js <wicket:link><script src="scripts/script.js"></script></wicket:link> WEB-INF/ 班级/ net/myapp/ 主页.class Homepage.html net/myapp/scripts/ script.js 您的标记应该是:

WEB-INF/ classes/ net/myapp/ Homepage.class Homepage.html net/myapp/scripts/ script.js <wicket:link><script src="scripts/script.js"></script></wicket:link> </wicket:link>
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的构建。参见

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


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

拼写资源,但不带s

reources/

是的,这是正确的,请看@Sean,它说src/main/webapp应该包含Web应用程序源代码。这是指html/java还是javascript文件?(顺便说一句,这是wicket原型创建的结构)图像呢?这些图片会出现在/src/main/resources中吗?@Mario Duarte-images也会出现在/webapp中。除非您希望有一种定制的方式来为资源提供服务(例如通过一个特殊的servlet)。如果您希望将脚本嵌入到java包中,这也很有效。谁希望在类目录中包含非程序代码?在我看来,公共javascript文件不应该放在私有服务器代码中。