Java Web项目结构最佳实践

Mar*_*son 7 java model-view-controller packages structure project

我正在开始一个使用Hibernate和标准MVC架构的新Java Web Project.我刚刚开始布局项目结构,在这样做的时候,我开始环顾四周,看看这个区域是否有任何标准,关于控制器应该去哪里以及通常是最好的方法.但是我还没有找到任何指导方针.

所以我很想知道的是

  • 是否有人了解Java Web Project布局的最佳实践指南?
  • 有没有人有一套特定的硬规则,他们总是遵循不同类型的项目?
  • 人们是否倾向于通过演示,业务和应用程序等不同层次来拆分包?

kaz*_*aki 6

这实际上取决于您的Web框架.

例如,如果您使用Wicket,则java文件和网页共存于同一目录中,而在大多数其他框架中,页面(.jsp文件或任何您的演示引擎)和代码隐藏的东西(Java文件)是完全独立的.

因此,请阅读框架附带的文档(Spring MVC,Struts,JSF等).

另一个好建议是使用Maven Archetypes为您的特定框架生成骨架.一些Web框架(例如seam)甚至有自己的代码生成工具,为您的Web项目奠定了基础.

对于src目录,我唯一的好建议(Yoni没有提到)是根据业务目的而不是根据类型/层创建包

这意味着包

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

并不是

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

第二种结构过于通用,倾向于解决具有不相关内容的大型软件包,并且难以维护.


Yon*_*oni 3

继续我之前的回答,我有很多网络项目。在所有这些中,src 下的结构或多或少是相同的。这些包大致分为 3 个逻辑层。

正如您所说,第一个是表示层,用于 servlet、应用程序侦听器和帮助程序。

其次,有一个用于 hibernate 模型/数据库访问层的层。第三层为业务逻辑。然而,有时这些层之间的边界并不明确。如果您使用 hibernate 进行数据库访问,则模型由 hibernate 类定义,因此我将它们放在与 dao 对象相同的区域中。例如 com.sample.model 保存 hibernate 数据对象,com.sample.model.dao 保存 dao 对象。

如果直接使用jdbc(通常与Spring一起使用),那么有时我发现将数据对象放在更靠近业务逻辑层而不是数据库访问层更方便。

(其余的内容通常属于业务层)。