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