我正在开始一个使用 Hibernate 和标准 MVC 架构的新 Java Web 项目。我刚刚开始布局项目结构,在此过程中,我开始环顾四周,看看这方面是否有任何标准,关于控制器应该去哪里以及通常布置所有内容的最佳方式。但是,我还没有真正找到任何指导方针。
所以我很想知道的是
- 有人知道 Java Web 项目布局的最佳实践指南吗?
- 是否有人对不同类型的项目有一套特定的硬性规则?
- 人们是否倾向于按表示层、业务层和应用程序等不同层来拆分包?
我正在开始一个使用 Hibernate 和标准 MVC 架构的新 Java Web 项目。我刚刚开始布局项目结构,在此过程中,我开始环顾四周,看看这方面是否有任何标准,关于控制器应该去哪里以及通常布置所有内容的最佳方式。但是,我还没有真正找到任何指导方针。
所以我很想知道的是
这实际上取决于您的 Web 框架。
例如,如果您使用 Wicket,java 文件和网页共存于同一目录中,而在大多数其他框架中,页面(.jsp 文件或任何您的演示引擎)和代码隐藏内容(java 文件)是完全分开的。
因此,请阅读框架随附的文档(Spring MVC、Struts、JSF 等)。
另一个好的建议是使用 Maven Archetypes 为您的特定框架生成骨架。一些 Web 框架(例如 seam)甚至有自己的代码生成工具,为您的 Web 项目奠定了基础。
我对 src 目录的唯一好建议(Yoni 没有提到)是根据业务目的而不是根据类型/层制作包
这意味着包
并不是
第二种结构过于通用,倾向于解决包含不相关内容的大型包并且难以维护。
为了继续我之前的回答,我有很多网络项目。在所有这些中, src 下的结构或多或少是相同的。这些包大致分为 3 个逻辑层。
正如您所说,首先是表示层,用于 servlet、应用程序侦听器和帮助程序。
其次,有一个层用于hibernate模型/数据库访问层。第三层为业务逻辑。然而,有时这些层之间的界限并不清晰。如果您使用休眠进行数据库访问,则模型由休眠类定义,因此我将它们与 dao 对象放在同一区域。例如,com.sample.model 保存休眠数据对象,com.sample.model.dao 保存dao 对象。
如果使用直接的 jdbc(通常使用 Spring),那么有时我发现将数据对象放置在更靠近业务逻辑层而不是 db 访问层更方便。
(其余的东西通常属于业务层)。
首先,要遵循流行的ide,ala Eclipse,Netbeans等的常规结构。以Eclipse为例,一切都已经安排好了WEB-INF和META-INF文件夹,因此打包和部署很容易。类源代码(通常在 src 下)会自动复制到 WEB-INF/classes。还有一些其他的考虑:
project
|-- pom.xml
`-- src
`-- main
|-- java
`-- webapp
|-- WEB-INF
| `-- web.xml
`-- index.jsp
我java
在这里的示例中包含了该文件夹,这可能很明显,但由于某种原因,它在上面的链接中被遗漏了。