2014-10-06 68 views
3

我正在学习java ee相关技术(并且我是相对新手),并尝试用Spring和Thymeleaf作为前端编写简单的Web应用程序,并且我在模块化方面遇到了一些问题。以html为资源的春天和百里香

我发现它用于将.html文件打包到WEB-INF目录中用于安全目的,但据我猜测,这意味着我必须在那里放置所有视图,在这个项目中有控制器。我想避免通过例如具有许多项目:

  • web应用
  • 管理模块
  • 用户模块
  • 核心模块

和他们每个人都有它自己的模块特定的控制器和视图(htmls)和web应用程序将它们全部组合到一个单独的大项目中。

在Thymelaf中,我发现了类似ClassLoaderTemplateResolver的东西,并得到了(也许愚蠢的想法)如何将大项目分成许多 - 将htmls放入classpath资源目录。通过这个,我可以从任何模块项目中请求任何html视图。这是否违反了一些安全原因?

我想问问有没有人有类似的问题,并找到适当的解决方案如何优雅地将HTML网络应用程序项目分成许多较小的“特定于上下文”的项目?

这是我目前的项目结构。蓝色箭头表示哪个视图连接到哪个控制器: http://prntscr.com/4tqt9m

这是我在这里问的第一个问题,所以我希望你能对我有所了解。

预先感谢您。

+1

你正在做很多额外的工作。使用Spring Boot并将您的Thymeleaf文件放在'src/main/resources/templates'中。 – chrylis 2014-10-07 05:28:11

+1

@chrylis谢谢!我花了2个多小时试图找出使用哪个TemplateResolver和所有这些。我删除了所有东西,并且弹簧启动会自动计算出来-_- – 2017-02-03 09:23:09

回答

0

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

如果您正确配置类路径扫描,那么应该考虑jar包在类路径上。

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

+0

是的,在这种情况下,限定名称是强制性的,它实际上可行,但我坚持相关的问题。这是资源加载像图像,CSS和类似的东西。 现在我不确定我想要做一件好事。它开始有点凌乱。 – Invader92 2014-10-07 08:20:05

+0

您可能会考虑使用多个战争,每个战场根目录。但是,您可能没有在战争之间共享会话数据 – gerrytan 2014-10-07 22:11:06

+0

实际上,将资源放置在/ META-INF /资源中可以让他们像在目标web应用程序项目中放入网络应用程序结构一样进行处理。 – Invader92 2014-10-13 17:18:30