2015-04-30 63 views
3

當我使用Spring 3.X 雖然使用註釋其對我來說很難知道哪種類型的控制器類的,我們要利用這個@Controller 參考獲取到註解@Controller和控制器類

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/Controller.html

這些是實現Controller類

AbstractController 
AbstractUrlViewController 
MultiActionController 
ParameterizableViewController 
ServletForwardingController 
ServletWrappingController 
UrlFilenameViewController 
AbstractWizardFormController 
SimpleFormController 

然而,當我們使用註解@Controller在我們的Spring MVC 程序如何知道我們的@Controller註釋正在執行這些控制器中的任何一個 ,請任何人解釋我

+0

'@ Controller'與'Controller'完全不同,你沒有得到它們,也不應該混合它們,因爲它們的行爲完全不同! –

回答

3

我認爲你錯過了這裏的觀點。在以前註冊控制器時,您的類必須實現了控制器接口並選擇了請求映射類型。有時您必須實現大量代碼才能實現單個請求映射。

現在,當我們有註釋時,模型已經改變。我們可以處理每個控制器類的多個請求類型。因爲在單個@Controller帶註釋的類中,我們可以處理許多請求映射。

控制器註釋是一個專門的@Component,它告訴Spring它裏面會找到@RequestMapping處理程序。這些處理程序可用於返回Json,HTML或上傳文件。

現在與相同模塊連接的邏輯可以放置在單個控制器類下,您可以更靈活地實現您想要實現的功能。其次@Controller使我們能夠顯着減少代碼量。

+0

如果我需要AbstractWizardFormController,那麼Spring如何理解我需要這個,如果我需要單個java代碼中的兩個或多個控制器,該怎麼辦? –

+0

嘗試這個turorial:http://www.codejava.net/frameworks/spring/spring-mvc-form-handling-tutorial-and-example – Beri

1

我們要使用這個 @Controller獲取哪種類型的控制器類?

@Controller註釋是告訴web容器,這是與@RequestMapping(URI)指定的URL請求的控制器類。如果您使用@Controller註釋您的課程,則您只需要在課程中提供一個請求處理程序方法,並使用@RequestMapping對其進行註釋,但控制器類也可以使用@RequestMapping進行註釋,並且在這種情況下方法內部的方法將作爲請求處理程序的方法。

如何知道我們的@Controller註釋正在實現這些控制器的任何一個 ?

你提到正在實施Controller接口的類的名稱,而不是@Controller註釋實現什麼。那些控制器類是用於特定目的,如它們的名字。

+0

好吧,我同意..所以,如果我需要AbstractWizardFormController是否我可以去@Controller或者實現AbstractWizardFormController? –

+0

你將不得不擴展AbstractWizardFormController類(你知道它是一個抽象類,抽象如何變得有用) –

+0

你能接受答案嗎?如果它滿足你的話@ MSIbrahim –