2012-02-02 39 views
6

我有我運行使用碼頭Maven項目:在jetty項目中如何存儲像HTML/css/javascript這樣的靜態文件?

$ mvn run:jetty 

凡在我的項目,我應該保存我喜歡HTML,CSS,Javascript代碼的靜態文件,圖像?

我的佈局是使用一個簡單的Web應用程序拱類型:

/src/main/java/webapp/web-inf/views/ 

我應該創建一個如存在命名的文件夾'資產'?

然後我的查看頁面會以某種方式引用/assets文件夾?我很困惑,什麼樣的路徑,我會在我的HTML頁面使用引用的圖像,如:

/assets/images/logo.png 

回答

17

這與其說是一個碼頭的問題,因爲它是一個一般的Java web應用程序的問題。如果您打算直接提供它們(如* .css,* .css,圖像等),請將它們放在WEB-INF以上但在您的文檔根目錄下方的某處。 Java WebApps都是以下基本目錄結構。

<docroot> 
    +WEB-INF/ 
    +lib/ 
    +classes/ 

任何東西<docroot>直接通過直線上升HTTP可達。任何WEB-INF及以下都不是。一個非常簡單的帶有一個頁面(index.jsp)的Web應用程序,圖像目錄中的一個圖像以及它的配置文件(web.xml)將如下所示。

index.jsp 
images/bob.jpg 
WEB-INF/ 
    web.xml 
    lib/ 
    classes/ 

在index.jsp中,你可以參考bob.jpg像...

<img src="images/bob.jpg"/> 
+0

你寫了'Anything in is reachable directly',你的意思是在docroot嗎? – Blankman 2012-02-03 01:35:15

+0

@布蘭克曼是的。文件根目錄中的任何內容都可以直接提供。任何在WEB-INF和下面的文件都不能。 – 2012-02-04 04:37:21

0

一般的答案是 - 你的web應用程序的根目錄是Web應用程序。動態資源(如JSP頁面或Freemarker模板)最好放在web-inf /子文件夾中(它們可以通過類加載器訪問,但不能直接通過瀏覽器請求訪問)。

6

這真的是一個Maven問題,而不是一個碼頭問題。

通常你需要把你的圖片(等)在Maven webapp目錄 - source/main/webapp/(不低於web-inf

如何構造的東西下面是你的,但將主要取決於如何許多內容您都期待投入,以及您認爲最好如何組織它。

source/main/webapp/assets/images是好的,但source/main/webapp/imagessource/main/webapp/static/也是如此。

然後,在您的HTML中,您可以使用放置在webapp位之下的任何路徑引用圖像。

+0

所以我在webapp文件夾裏添加了test.html,運行mvn clean install,mvn jetty:run,它說沒有爲/test.html找到映射我正在瀏覽http://127.0.0.1:8080/test.html – Blankman 2012-02-04 01:27:49

+0

我引用了我的index.jsp中的圖像,圖像也沒有渲染。 – Blankman 2012-02-04 01:32:11

相關問題