2011-05-04 57 views
13

我们正在使用Spring,Sping MVC和Hibernate开始一个新的Java EE web应用程序。我们很可能也会使用maven。j2ee web应用程序的标准项目/包结构

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

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

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

我们将使用Spring源代码版本2.6.0(最新版本)。

任何想法?

回答

21

如果您使用的是maven,最好遵循标准的maven项目布局。您可以从选项

这会给你一个包结构如表得到行家做,产生这种结构对你来说,

mvn archetype:generate 

和选择弹簧-MVC-JPA的原型,

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

嗨。谢谢回复。我尝试过,但我们不会使用ejb的等等东西。除此之外,我如何构建我的类,即弹簧控制器,模型,道奇,服务,业务逻辑,各种接口等? – ashishjmeshram 2011-05-04 05:26:41

+1

更新了我的答案,使用spring-mvc-jpa-archetype – sbridges 2011-05-04 05:36:26

11

常见的,更完整的Java包的MVCSR结构(模型,视图,控制器,服务,信息库)的Web应用程序就会是这样的:

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.