7

我正在开始一个使用 Hibernate 和标准 MVC 架构的新 Java Web 项目。我刚刚开始布局项目结构,在此过程中,我开始环顾四周,看看这方面是否有任何标准,关于控制器应该去哪里以及通常布置所有内容的最佳方式。但是,我还没有真正找到任何指导方针。

所以我很想知道的是

  • 有人知道 Java Web 项目布局的最佳实践指南吗?
  • 是否有人对不同类型的项目有一套特定的硬性规则?
  • 人们是否倾向于按表示层、业务层和应用程序等不同层来拆分包?
4

5 回答 5

7

这实际上取决于您的 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

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

于 2009-01-31T20:33:44.833 回答
3

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

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

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

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

(其余的东西通常属于业务层)。

于 2009-01-31T17:33:53.573 回答
2

首先,要遵循流行的ide,ala Eclipse,Netbeans等的常规结构。以Eclipse为例,一切都已经安排好了WEB-INF和META-INF文件夹,因此打包和部署很容易。类源代码(通常在 src 下)会自动复制到 WEB-INF/classes。还有一些其他的考虑:

  1. 如果您使用的是 MVC,那么您可能不需要直接访问您的 JSP。如果是这样,出于安全原因,请将 JSP 源代码保留在 WEB-INF/jsp 下。
  2. 同样,将自定义标签文件保存在 WEB-INF/tags 下。
  3. 在 js 文件夹中保留 javascript 文件,在 style 文件夹中保留 css 文件等。所有文件夹应与 WEB-INF 处于同一级别以模拟真实部署。
  4. 最好根据层将代码分成包。显然,您的 Hibernate daos 不需要与您的 servlet 在同一个包中。
  5. 如果您最终在同一个包中包含太多 servlet,请考虑根据功能对它们进行子打包,但它们有一个共同的祖先包是很好的 - 它有助于提高可读性。
于 2009-01-31T14:54:30.713 回答
2

Java 网页结构

于 2010-11-23T05:48:27.933 回答
0

使用Maven webapp 原型布局。

project
|-- pom.xml
`-- src
    `-- main
        |-- java
        `-- webapp
            |-- WEB-INF
            |   `-- web.xml
            `-- index.jsp

java在这里的示例中包含了该文件夹,这可能很明显,但由于某种原因,它在上面的链接中被遗漏了。

于 2012-04-14T04:46:24.367 回答