Webapp 文件组织约定(开发结构)

对于我正在开发的Web应用程序,我通常使用以下文件组织,因为我认为它尊重约定:

src
|-- main
    |-- resources
    |   |-- *.properties
    |   |-- *.xml
    |   |-- spring
    |       |-- applicationContext.xml (main application context config file)
    |-- webapp
        |-- WEB-INF
            |-- spring
            |   |-- spring-mvc.xml (web application context config file, delegated to manage only the web part)
            |   |-- spring-security-http.xml (web security config)
            |-- static
            |   |-- *.css
            |   |-- *.js
            |-- views
            |   |-- *.jsp
            |-- web.xml (deployment configuration)

我想尝试的是根据以下结构组织我的文件:

src
|-- main
    |-- resources
    |   |-- *.properties
    |   |-- *.xml
    |   |-- web.xml
    |   |-- spring
    |       |-- applicationContext.xml
    |       |-- spring-mvc.xml
    |       |-- spring-security-http.xml
    |-- webapp
        |-- WEB-INF
            |-- static
            |   |-- *.css
            |   |-- *.js
            |-- views
                |-- *.jsp

当然,在打包 web 应用程序时,文件将被重新定位到它们必须的位置(例如 web.xml WEB-INF 文件夹中的文件)。我想像上面那样重新组织我的web应用程序的原因是,我发现将所有*.xml配置文件放在同一位置更方便,而不是在这里和那里有一些。在你看来,打破我最初的结构是一个坏主意吗?如果是,为什么?为什么将所有 Web 配置文件都放在 WEB-INF 文件夹中如此重要?

PS:从技术上讲,我知道如何很好地链接web应用程序的类路径中的所有文件。问题更多的是关于惯例和个人/专业经验的反馈。


答案 1

你可以创建Java Web项目是一些流行的IDE,如Eclipse,NetBeans,IntelliJ IDEA,看看典型的Java Web应用程序结构。

而且开发结构和包装结构是有区别的。
在开发应用程序时,您几乎可以使用您喜欢的任何结构。但是您必须根据特定规则打包Java EE Web应用程序。

有关详细信息,请参阅官方 Java EE 教程:

这里还有使用Java 2 Platform,Enterprise Edition(虽然过时但可能有用)开发的应用程序的推荐约定:
Java Blueprints Guidelines。企业应用程序的项目约定

这里有一个来自上面的Java BluePrints的例子:Web Applications: Recommended Directory Structure


更新

下面是我的一个 Java Web 应用程序项目与 Spring 中的示例。例如,我将所有与Spring相关的配置文件存储在WEB-INF内专门创建的spring文件夹中。在spring文件夹中,我创建了更多文件夹来更好地组织我的应用程序。同样,这只是可能的变体之一,即个人偏好问题

Spring project structure example


答案 2

web.xml需要在 WEB-INF 目录中。这是应用服务器唯一会寻找它的地方。除此之外,spring xml 文件可以位于资源中(最终将位于类路径中)。


推荐