Java Spring和thymeleaf使用html作为资源

Java Spring和thymeleaf使用html作为资源,java,spring,thymeleaf,Java,Spring,Thymeleaf,我正在学习JavaEE相关技术(我是一个比较新手),并试图用Spring和Thymeleaf作为前端编写简单的web应用程序,但我在这方面遇到了一些问题 模块化 我发现为了安全起见,它被用来将.html文件打包到WEB-INF目录中,但是,据我猜测,这意味着我必须将我的所有视图都放在那里,在这个项目中有控制器。我希望通过实施许多项目来避免这种情况,例如: 网络应用 管理模块 用户模块 核心模块 它们中的每一个都有自己的特定于模块的控制器和视图(htmls)以及web应用程序 将它们合并到一个

我正在学习JavaEE相关技术(我是一个比较新手),并试图用Spring和Thymeleaf作为前端编写简单的web应用程序,但我在这方面遇到了一些问题 模块化

我发现为了安全起见,它被用来将.html文件打包到WEB-INF目录中,但是,据我猜测,这意味着我必须将我的所有视图都放在那里,在这个项目中有控制器。我希望通过实施许多项目来避免这种情况,例如:

  • 网络应用
  • 管理模块
  • 用户模块
  • 核心模块
它们中的每一个都有自己的特定于模块的控制器和视图(htmls)以及web应用程序 将它们合并到一个大项目中

在Thymelaf中,我找到了类似ClassLoaderTemplateResolver的东西,并得到了(可能是愚蠢的想法)如何将大型项目划分为多个项目——将htmls放入类路径资源目录。 通过这个,我可以从任何模块项目请求任何html视图。这是否违反了某些安全原因

我想问一下,是否有人有类似的问题并找到了合适的解决方案,如何将html web应用程序项目优雅地划分为许多较小的“特定于上下文”的项目

这是我目前的项目结构。蓝色箭头指示哪个视图连接到哪个控制器:

这是我在这里问的第一个问题,所以我希望你能理解我


提前感谢。

您可以在运行时使用类路径查找合并多个Spring和Thymeleaf模块。只需确保您提供了不同的限定名称/文件夹结构(例如:不同包上名为views/index.html的两个文件可能会导致混乱的不一致)

使用Spring,如果您正确配置类路径扫描,它应该考虑类路径上的jar包


使用Thymeleaf,尝试使用前缀设置TemplateResolver,例如
classpath:/templates/
,然后在不同的模块上设置文件夹结构,例如
src/main/resources/templates/package-a/foo.html
src/main/resources/templates/package-b/foo.html
。我还没有尝试过这个,也不是100%确定类加载器可以正确地合并它们。

您正在做大量额外的工作。使用Spring Boot并将您的ThymileAF文件放入
src/main/resources/templates
@chrylis谢谢!!我花了两个多小时试图找出要使用哪个TemplateResolver以及所有这些。我删除了所有内容,spring boot自动解决了这个问题-是的,在这种情况下,限定名称是必须的,而且它实际上是有效的,但我还是遇到了相关的问题。这是像图像、css之类的资源加载。现在我不确定我是否想要实现一件好事。它开始有点混乱。你可以考虑使用多个战争,每个上下文都有一个。然而,您可能无法在WARS之间共享会话数据。实际上,将资源放在/META-INF/resources中可以使它们像放在目标web应用项目的web应用结构中一样被处理。