j2ee Web应用程序的标准项目/包结构

我们正在使用Spring,Sping MVC和Hibernate启动一个新的Java EE Web应用程序。 我们很可能也会使用maven。

在开始之前,我们需要为Web应用程序提出项目/包结构。

什么是Java EE Web应用程序的标准项目/包结构?

它还应该在所有应用程序服务器上运行,而不对项目结构或任何配置文件进行任何更改。

我们将使用Spring source IDE 2.6.0版(最新版本)。

有任何想法吗?

如果您使用的是maven,最好遵循标准的maven项目布局。 你可以通过这样做让maven为你生成这个结构,

mvn archetype:generate 

并从选项列表中选择spring-mvc-jpa-archetype

这将给你一个包结构,如,

  ├── pom.xml └── src ├── main │  ├── java │  │  └── mygroup │  │  ├── controller │  │  │  ├── HomeController.java │  │  │  └── PersonController.java │  │  ├── dao │  │  │  └── PersonDao.java │  │  └── model │  │  └── Person.java │  ├── resources │  │  ├── db.properties │  │  ├── log4j.xml │  │  └── META-INF │  │  └── persistence.xml │  └── webapp │  ├── index.html │  ├── META-INF │  │  ├── context.xml │  │  └── MANIFEST.MF │  ├── resources │  │  └── css │  │  └── screen.css │  └── WEB-INF │  ├── spring │  │  ├── app │  │  │  ├── controllers.xml │  │  │  └── servlet-context.xml │  │  ├── db.xml │  │  └── root-context.xml │  ├── views │  │  ├── edit.jsp │  │  ├── home.jsp │  │  └── list.jsp │  └── web.xml └── test ├── java │  └── mygroup │  ├── controller │  │  ├── DataInitializer.java │  │  ├── HomeControllerTest.java │  │  └── PersonControllerTest.java │  └── dao │  └── PersonDaoTest.java └── resources ├── db.properties ├── log4j.xml ├── test-context.xml └── test-db.xml 

MVCSR(模型,视图,控制器,服务,存储库)Web应用程序的通用,更完整的Java包结构如下所示:

 java └── com └── youdomain | ├── base // broadly used app-wide base and abstract classes) | ├── core // broadly, scattered use helpers, utilities, app health/stats | // tracking, logging, etc | ├── controller // Fields Http/CGI requests and drives/initiates request | // comprehension, validation, security checks, requesting | // operations by the Service module and invoking the View to | // generate a response. | ├── data // This is the lower level data infrastructure, with several | //packages under it for mappers, schema tables/enums, helpers, | // record location, id management, etc | ├── domain // app-wide exposed classes, managers, and interfaces to | // each persisted (usually DB) domain 'object'. Each | // object often correlates to one table row in you DB. | // Domain objects are mostly considered data, but have some fundamental | // record construction, validation, elaboration, and ancillary information | // functionality which is opaque to the rest of the application. | // For example: Customer, Account, Purchase, Inventory, | // Product, Sale, Return, SpecialOffer, FeedbackComment... | ├── repository // more complicated persisted objects, often structured | // to address certain efficiency or traversal needs, often each | // repository is underpinned by several records, tables, | // and even cross-DB structures. Example: | // -- OrderHistory, | // -- ProductsGlobalSearchIndex, | // -- CustomerSpecificProductMarketingSuggestionCorrelates | ├── service // The smarts of the whole application, performs macro, holoistic | // operations involving multiple DB tables and operations. Such as: | // -- account.UserAccountLifecycle, | // -- order.CustomerOrder, | // -- order.CustomerOrderShipment | └── view // Intefaces with your jsp, freemarker, tapestry etc.