2012-10-03 90 views
12

在Spring MVC中,我知道如何在每個控制器和方法/操作中設置RequestMappingSpring MVC請求映射,這可以動態/可配置嗎?

但是如果我想這是可配置的,所以比如我下面的控制器:

BlogController 
- with methods for listing blogs entries, single entry, new, update, etc. 
ArticleController 
- with methods for listing articles entries, single entry, new, update, etc. 

現在,在我的應用程序,管理員可以設置2個博客的網站,和1條部分,因此,網址是這樣的:

www.example.com/article_section1/ - uses ArticleController 
www.example.com/blog1/ - uses BlogController 
www.example.com/blog2/ - uses BlogController 

也許一段時間後,管理員希望另一篇文章部分,所以他們只是配置一個新的部分,如:

www.example.com/article_section2/ 

這有工作動態/上即時而無需重新啓動過程中的應用。

我的問題是隻關心我將如何處理URL映射到我的控制器。

這怎麼有可能與Spring MVC的?

我只知道如何在控制器或方法級別上使用@RequestMapping("/helloWorld")將URL映射到控制器,但這會使URL映射得到修復,並且不像我想要的那樣進行配置。

更新:

我將在數據庫中存儲的路徑,以及與映射到控制器的類型,以便像:

path     controller 
/article_section1/ article 
/blog1/    blog 
/blog2/    blog 
.. 

利用上述信息,我怎麼能派遣請求正確的控制器?

同樣,沒有期待過載/重新部署,我意識到這將需要更多的工作,但其在規範:)

+1

你是怎麼實現這個的?我處於類似的情況。 – DairyLea

回答

5

請問這種對你的URL映射的工作?

www.example.com/blog/1/ 
www.example.com/blog/2/ 

如果是的話,那很簡單:春季3支持路徑變量:http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-ann-requestmapping-advanced

或者,你可以創建一個通用請求映射和你自己的子調度,讀取配置文件,但我認爲這是可能更多的工作比它的價值。

+3

我想完全控制網址,我知道關於路徑變量的感謝。實際上,我將從數據庫中讀取路徑,然後將請求以某種方式轉發給正確的控制器,但不知道如何。 – loyalflow

0

不工作? @RequestMapping(「/ helloWorld *」)

2

在運行時真正更改請求映射可能很困難(並且由於小錯誤很容易發生,所以不推薦)。如果你仍然希望這樣做,也許JRebel,更具體地說,LiveRebel對於實時重新部署代碼和配置會很有趣。

否則,像其他職位的建議,RequestMappings支持通配符,在此範圍應該在官方文檔的快速閱讀後予以明確。

+2

不,我想完全控制網址,所以這不起作用,我不想重新加載/重新部署任何代碼。希望我能以某種方式將請求轉發給正確的控制器。 – loyalflow

+3

編寫您自己的HandlerMapping可能很有趣http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/HandlerMapping.html –

+0

感謝您的鏈接,這似乎根據要求我將不得不採取的方向。 – loyalflow

1

嘗試用如下@RequestMapping通配符使用:

@RequestMapping(value="/article_section*/"} 
public void getArticle(....){ 
//TODO implementation 
} 

@RequestMapping(value="/blog*/"} 
public void getBlog(....){ 
//TODO implementation 
} 

希望這有助於!