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

Java Webapp文件组织约定(开发结构),java,spring,jakarta-ee,web-applications,file-organization,Java,Spring,Jakarta Ee,Web Applications,File Organization,对于我正在开发的Web应用程序,我通常使用以下文件组织,因为我认为它尊重惯例: src |--主要 |--资源 ||--*.属性 ||--*.xml ||——春天 ||--applicationContext.xml(主应用程序上下文配置文件) |--网络应用 |--WEB-INF |--弹簧 ||--spring-mvc.xml(web应用程序上下文配置文件,仅授权管理web部件) ||--spring-security-http.xml(web安全配置) |--静止的 ||--*.css |

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

src
|--主要
|--资源
||--*.属性
||--*.xml
||——春天
||--applicationContext.xml(主应用程序上下文配置文件)
|--网络应用
|--WEB-INF
|--弹簧
||--spring-mvc.xml(web应用程序上下文配置文件,仅授权管理web部件)
||--spring-security-http.xml(web安全配置)
|--静止的
||--*.css
||--*.js
|--观点
||--*.jsp
|--web.xml(部署配置)
我想尝试的是按照以下结构组织我的文件:

src
|--主要
|--资源
||--*.属性
||--*.xml
||--web.xml
||——春天
||--applicationContext.xml
||--spring-mvc.xml
||--spring-security-http.xml
|--网络应用
|--WEB-INF
|--静止的
||--*.css
||--*.js
|--观点
|--*.jsp
当然,在打包webapp时,文件将被重新定位到必须的位置(例如web-INF文件夹中的web.xml文件)。我之所以要像上面那样重新组织我的webapps,是因为我发现将所有*.xml配置文件放在同一个位置更方便,而不是在这里和那里各有一些。你认为打破我最初的结构是个坏主意吗?如果是,为什么?为什么将所有web配置文件放在web-INF文件夹中如此重要


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

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

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

而且开发结构和包装结构之间存在差异
在开发应用程序时,你几乎可以使用任何你喜欢的结构。但是您必须根据特定规则对Java EE web应用程序进行打包

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

  • (这里只需忽略与NetBeans相关的信息)
此外,以下是使用Java 2平台开发的应用程序结构化的推荐约定,企业版(虽然过时,但可能有用):

下面是上述Java蓝图中的一个示例:


更新

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


谢谢您的回答。我谈到了开发结构,我知道打包时,web.xml文件应该在web-INF文件夹中。你能提供你所说的典型结构吗?我在springfuse.com上找到了第一个结构。删除了我关于你的目录结构不同寻常的第一句话。正如@AndresOlarte所指出的,它确实是标准的Maven结构()。没想过Maven的结构,抱歉。刚刚写了关于非Mavenized目录结构的文章……所以你说
WEB-INF
应该放在
src
之外,放在
WebContent
中。然而,ApacheGuide却提出了相反的建议:@informatik01请参阅我的上述评论。在另一个maven指南中,OP的结构被认为是正确的。@parser Em,实际上这根本不是maven项目(ApacheAnt用于依赖项管理),而通用目录结构是由Eclipse为web项目生成的。这就是为什么会有“Web内容”目录等。另外,这个问题也不是特定于Maven的,而是与JavaEE规范中描述的需求相关的。另请参阅Oracle Java EE官方教程中的。好的,谢谢!那么,在开发过程中将web.xml放在src/main/resources中,并在打包时将其重新定位到web-INF文件夹中如何?当然,您可以在打包过程中移动它。但是,对于查看您的应用程序的人来说,这是违反直觉的。从您的结构来看,它似乎是标准的Maven webapp结构。我会坚持把东西放在自然位置。