2009-01-31 174 views
7

我開始使用Hibernate和標準MVC體系結構的新Java Web項目。 我剛剛開始佈置項目結構,在做這件事的時候,我開始環顧四周,看看在這個領域是否有任何標準,關於控制器應該去哪裏以及一般情況下最好的方法是把所有東西都放好。但是我沒有真正找到任何指導方針。Java Web項目結構最佳實踐

所以我很好奇,想知道是

  • 是任何人都知道的任何最佳實踐準則爲Java Web項目的佈局?
  • 有沒有人有一套特定的硬性規則,他們總是遵循不同類型的項目?
  • 人們是否傾向於按照不同的層次來拆分包裝,例如演示文稿,業務和應用程序?

回答

3

要繼續我以前的答案,我有很多web項目。在它們之中,src下的結構大致相同。這些軟件包大致分爲3個邏輯層。

首先是表示層,就像你說的那樣,servlet,app listeners和helper。

其次,hibernate模型/ db訪問層有一層。業務邏輯的第三層。但是,有時這些層之間的界限並不清楚。如果您使用hibernate進行數據庫訪問,那麼該模型由hibernate類定義,因此我將它們放在與dao對象相同的區域中。例如。 com.sample.model包含hibernate數據對象,com.sample.model.dao包含dao對象。

如果使用直接的jdbc(通常是使用Spring),那麼有時我發現將數據對象放在業務邏輯層而不是數據庫訪問層更方便。

(其餘的東西通常屬於業務層)。

2

首先,遵循一個流行的IDE,丙氨酸Eclipse中,Netbeans的等 在Eclipse中,例如,一切都已經與WEB-INF和META-INF文件夾排列的常規結構,所以包裝部署很容易。類源代碼(通常在src下)會自動複製到WEB-INF/classes。 還有一些其他的考慮:

  1. 如果您正在使用MVC,那麼很可能是你並不需要直接訪問JSP中。如果是這樣,出於安全原因,將JSP源代碼保存在WEB-INF/jsp下。
  2. 同樣,將自定義標籤文件保存在WEB-INF /標籤下。
  3. 保存js文件夾中的javascript文件,樣式文件夾中的css文件等。所有文件夾應與WEB-INF處於同一級別,以模擬真實的部署。
  4. 根據圖層將代碼分成多個包是很好的。很明顯,你的Hibernate daos不需要與servlet處於同一個包中。
  5. 如果最終在同一個包中包含過多的servlet,請考慮將它們按功能分包,但它們有一個共同的祖先包是很好的 - 它有助於提高可讀性。
+0

我更喜歡WEB-INF/content或WEB-INF/view,誰知道什麼是或可能是演示技術...... – 2009-01-31 15:35:59

+0

沒錯,謝謝你指出。只要他們存儲在WEB-INF ... – Yoni 2009-01-31 15:44:49

6

它確實取決於你的web框架。

例如,如果您使用的檢票,java文件和網頁共存於同一個目錄,而 大多數其它框架中,頁面(.jsp文件或什麼是你的顯示引擎)和 代碼隱藏的東西(Java文件)完全分開。

所以請閱讀您的框架附帶的文檔(Spring MVC,Struts,JSF e.t.c)。

另一個好建議是使用Maven Archetypes爲您的特定框架生成一個框架。一些Web框架(如seam)甚至有自己的代碼生成工具,爲您的Web項目奠定基礎。

我唯一的好建議(即不被號Yoni提及)的src目錄是 根據經營宗旨,不按類型/層

這意味着包

  • 使包com.mycompany.myproject.customers
  • com.mycompany.myproject.departments
  • com.mycompany.myproject.billing
  • com.mycompany.myproject.reports
  • com.mycompany.myproject.admin

和NOT

  • com.mycompany.myproject.entities
  • com.mycompany.myproject.tables
  • com.mycompany.myproject.graphs
  • com.mycompany.myproject.dialogs
  • com.mycompany.myproje ct.servlets

第二種結構過於籠統,往往會在無關的東西周圍解決巨大的包,很難維護。

0

使用Maven webapp archetype layout.

project 
|-- pom.xml 
`-- src 
    `-- main 
     |-- java 
     `-- webapp 
      |-- WEB-INF 
      | `-- web.xml 
      `-- index.jsp 

我已經包括在這裏的例子中java文件夾,也許這是顯而易見的,但它是在上面的鏈接的冷落一些原因。