2014-10-06 100 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