我有一個項目被分成不同的模塊,例如你有一個網站和一個論壇。攔截請求並在內部轉發給控制器?
論壇,可以發現:
http://example.com/[forum]/
和例如可以是:
http://example.com/support/
http://example.com/helpme/
http://example.com/aforum/
該網站,可以發現:
http://example.com/[site]/
和例如可:
http://example.com/site1/
http://example.com/nice/
http://example.com/something/
[forum]和[site]部分是可變的。在我的數據庫中,我查找「nice」是一個網站,「helpme」是一個論壇。
我有我的ForumController彈簧RequestMapping:
@RequestMapping(value = { "/{simpleTitle:[0-9a-z-]+}" }, method = RequestMethod.GET, produces = "text/html")
public void list(@PathVariable String simpleTitle, Model model, HttpServletRequest req, HttpServletResponse resp) {
我有一個網站samething,所以SiteController:
@RequestMapping(value = { "/{simpleTitle:[0-9a-z-]+}" }, method = RequestMethod.GET, produces = "text/html")
public void list(@PathVariable String simpleTitle, Model model, HttpServletRequest req, HttpServletResponse resp) {
這當然變壞,造成2個控制器具有相同requestmapping不好。
我可以創建一個FrontController與上述請求映射,查找什麼simpleTitle(論壇或網站)和調用功能來顯示論壇或網站。這樣可行。
但它並不是非常「春天」的喜歡和結構。
是否有可能「攔截」一個請求,並在控制器上自己內部轉發(或調用該函數)?
這樣我可以讓Interceptor看起來很簡單,決定它是論壇還是站點,並且「轉發」/「調用」正確的控制器。
不知道這是否是你的spring-ish,但你可以通過參數S(對於站點)或F(對於論壇)來獲得spring bean,並且這個bean將在內部執行重定向。您將爲(S)ite和(F)orum的實現實現通用接口。您可以在另一個bean中抽象出路徑的檢索。 –
@LuiggiMendoza這聽起來確實是春天;-)雖然我很難理解它,但是你能否再解釋一下?沒有大的例子需要,只是基本知識或者可能只是一個解釋它多一點的網址。 – TinusSky