在本文中,我将主要与JSF讨论基于Web的项目的各种组织结构。 开始新项目时,首先想到的是如何组织Java包? 想象一下,您开发了一个基于Web的用户和组管理系统。 很长时间以来,我使用以下Java包结构来将Bean类与模型类分开(模型类有时称为视图助手)。
我认为这是一个不错的布局,但是如果您有大型项目,这还不够好。 为什么? 尽管某些Bean和模型类属于同一类,但它们彼此之间的距离很远。 您必须在Bean和模型包之间导航并滚动IDE。 这可能会占用一些时间。 多年以来,我意识到根据逻辑/语义含义对类进行分组可能会更好。 这意味着,模型包和类与它们所属的Bean位于同一高级包中。 常用的bean和模型类可以放在一个额外的包中,例如common。
但请注意这里。 一些开发人员更喜欢炸毁bean的数量。 如果严格遵循MVC模式,则需要支持bean,控制器bean和视图接口bean。 支持bean负责组件,值绑定和事件委托。 他们将业务逻辑的执行委托给控制器bean。 控制器Bean与基础后端系统进行通信。 对概念的这种精细调整的分离提高了小型软件的可测试性,但是它导致了很多类,并且在某些情况下会使项目的结构复杂化。
什么是网页? 这里或多或少有两种相同的方法。 第一个遵循例如本文所述的方法。 有三个主要文件夹:模板,视图和部分。 模板是(几乎)每个页面上使用的facelets模板。 视图是整页。 它们绑定到浏览器中的URL。 视图使用模板。 部分是页面上的小块。 视图包含各节(请考虑ui:include)。 结构如下:
您还可以在此处看到一个共享文件夹,其中包含一些常用的东西。 用户和组的页面包括一个公共部分dialogs.xhtml。 它位于/ sections / shared / usergroups下面。 正如我的负责人所说,我意识到,将页面和部分组合在一起时,是一种更好的方法。 因此,下一个结构具有两个主要的文件夹页面和模板。 节与包含它们的页面位于相同的上级文件夹中的包含之下。
现在,在IDE导航方面,该分组看起来更加高效。 同样清楚的是哪些部分属于同一部分。 在上一张图片中,您还可以看到文件夹usergroups包含子文件夹user,groups和common,包括在user / group management上下文中在不同页面上共享的文件夹。
您首选的结构是什么? 分享你的意见。 欢迎任何反馈。
参考: 基于JEE的Web项目的结构是什么? 来自我们的JCG合作伙伴 Oleg Varaksin
翻译自: https://www.javacodegeeks.com/2013/11/what-is-your-structure-of-jee-based-web-projects.html