Java Web项目结构最佳实践
我正在启动一个新的JavaWeb项目,它使用Hibernate和标准的MVC架构。 我刚刚开始规划项目结构,在这样做的同时,我开始环顾四周,看看这方面是否有任何标准,关于控制器应该去哪里,以及通常最好的布局方式。然而,我还没有找到任何指导方针 所以我想知道的是Java Web项目结构最佳实践,java,model-view-controller,project,structure,packages,Java,Model View Controller,Project,Structure,Packages,我正在启动一个新的JavaWeb项目,它使用Hibernate和标准的MVC架构。 我刚刚开始规划项目结构,在这样做的同时,我开始环顾四周,看看这方面是否有任何标准,关于控制器应该去哪里,以及通常最好的布局方式。然而,我还没有找到任何指导方针 所以我想知道的是 有人知道Java Web项目布局的最佳实践指南吗 是否有人有一套特定的硬规则,他们总是遵循不同类型的项目 人们是否倾向于按不同的层(如表示层、业务层和应用程序层)划分软件包 首先,我们需要遵循流行ide、ala Eclipse、Netb
- 有人知道Java Web项目布局的最佳实践指南吗
- 是否有人有一套特定的硬规则,他们总是遵循不同类型的项目
- 人们是否倾向于按不同的层(如表示层、业务层和应用程序层)划分软件包
为了继续我先前的回答,我有许多web项目。在所有这些结构中,src下的结构大致相同。这些包大致分为3个逻辑层 第一个是表示层,如您所说,用于servlet、应用程序侦听器和帮助器 其次,有一个用于hibernate模型/db访问层的层。业务逻辑的第三层。然而,有时这些层之间的边界并不清楚。如果您使用hibernate进行db访问,那么模型是由hibernate类定义的,因此我将它们放在与dao对象相同的区域中。例如,com.sample.model保存hibernate数据对象,com.sample.model.dao保存dao对象 如果使用纯jdbc(通常与Spring一起使用),那么有时我发现将数据对象放在更靠近业务逻辑层的位置比放在db访问层的位置更方便
(其余部分通常属于业务层)。这取决于您的web框架 例如,如果您使用Wicket,java文件和网页同时存在于同一目录中 在大多数其他框架中,页面(.jsp文件或任何表示引擎)和 代码隐藏的东西(java文件)是完全独立的 因此,请阅读框架附带的文档(SpringMVC、Struts、JSFEE.t.c) 另一个好的建议是使用Maven原型为您的特定框架生成框架。一些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
我在这里的示例中包含了
java
文件夹,这可能是显而易见的,但出于某种原因,它被遗漏在上面的链接中。我更喜欢WEB-INF/content或WEB-INF/view,谁知道什么是或可能是表示技术……我有一些优点。然而,我仍然对人们关于src目录应该如何使用包进行结构的观点感兴趣,因为servlets主要被称为JSP内容,所以我会将它们放在一个名为presentation的包中。@kazanaki不幸的是,在这个项目中,我只使用简单的MVC,没有框架。我已经根据maven规则构建了src目录。在软件包布局中,您是将其分包到不同的层中,还是只深入到子目的中。@标记子包是层。例如,我给客户举的例子有customers.actions、customers.servlet、customers.entities e.t.c.但是在一个非常大的项目中,正如您所说,子包可以是子目的。没有正确的答案IMHOI对这个答案投了赞成票:我有一个大项目,的确,与层相关的包很难维护,但有一些问题:接口放在哪里?是否有公共接口或类(例如抽象类)?
project
|-- pom.xml
`-- src
`-- main
|-- java
`-- webapp
|-- WEB-INF
| `-- web.xml
`-- index.jsp