2011-03-29 60 views
3

我刚刚建立了使用Wicked框架一个非常简单的Java Web应用程序。该项目目前的布局是:访问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文件,并看到以下布局:

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

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

回答

5

该网站相关的资源应该放在src/main/webapp

+1

是啊,这是正确的,看到http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html – Sean 2011-03-29 14:20:01

+0

@Sean它说的src/main/webapp的应该包含Web应用程序的来源。这是否意味着html/java或javascript文件? (btw,这是由wicket archetype创建的结构)怎么样的图像?那些进入/ src/main/resources? – 2011-03-29 14:49:04

+0

@Mario Duarte - 图片也转到/ webapp。除非你想有一种自定义的服务方式(例如通过一个特殊的servlet)。 – Bozho 2011-03-29 14:54:57

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> 
+0

如果你想将你的脚本嵌入到你的java包中,这也可以工作。 – Marcelo 2011-03-29 17:13:46

+0

谁希望在类目录中有非程序代码? 在我看来,公共JavaScript文件不应该放在私人服务器代码。 – SPee 2011-05-03 14:40:50

3

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

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

这种方式在HTML文件中的refernce到

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

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

构建脚本,或应用程序布局应照顾这对你的更新。

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

2

而其他的答案一般是正确的,他们不太需要检票进去。使用Wicket,可以在的类路径上有资源,在某些情况下,它们比静态文件更好。

您可以使用Application.mountSharedResource()到URL分配给共享资源,它可以来自任何地方,你的classpath包括在内。

-1

没有s的拼写资源?

reources/ 
相关问题