2015-01-09 117 views
0

隨着所有教程的出現,我設法讓控制器顯示視圖。但是,我不明白我如何讓用戶通過MVC瀏覽網站。每個對服務器的請求都必須通過控制器?如果每個請求都必須通過控制器,我該如何讓控制器定義它應該將請求轉發到的響應類型。MVC體系結構瞭解

編輯:我正在做一個學校項目,需要我將我目前不可重用的代碼轉換爲MVC模式,但我不理解不同視圖的導航部分。如何從一種觀點轉向另一種觀點。例如,navbar元素應該指向控制器還是視圖?

+0

你是什麼意思的「定義響應類型」? –

+0

嗨@Ophitect您可能想看看[**爲什麼我應該使用MVC模式?**](http://programmers.stackexchange.com/questions/105352/why-should-i-use-an-mvc-模式); –

+0

比方說,我定義了我的登錄控制器,登錄控制器處理登錄表單並將用戶重定向到視圖,無論是成功還是錯誤。 查看1 is success.jsp 查看2是product.jsp 我現在在查看1。我該如何導航查看2? – Ophitect

回答

0

控制器來了,它與模型交流,併發送給你想要的視圖。

所以,你需要什麼,在視圖中,只是把在你想要的控制器映射的URL鏈接一些...

0

簡短的回答是,所有行動「點」到控制器用參數告訴它動作應該是什麼,以及任何其他必要的參數。

假設您有一個簡單的註冊表單。您可能有以下兩種操作:showRegistration和Register。 MVC不是特定於網絡的,但我將在該上下文中提供示例(根據您的意見)。這兩個操作將指向您的控制器(比如index.jsp),其URL爲如下所示:/index.jsp?act=showRegistration和/index.jsp?act=Register。你的控制器對不同的動作會有不同的邏輯(你可以自己做很多種方法,或者使用一些爲你開關邏輯的框架)。在一天結束的時候在控制器邏輯將歸結爲這樣的事:

if showRegistration: 
    model.getCountries //to populate a dropdown maybe 
    view.showRegistrationForm 
if Register: 
    model.validateRegistrationForm 
    if not valid 
     view.showRegistrationNotValid 
    else 
     model.createUser 
     if userCreated 
      view.showSuccess 
     else 
      view.showCouldNotCreate 

的想法是,該控制器可重複使用的使用模型和視圖組件contructs完整動作。您可以在許多不同的地方使用相同的model.getCountries,從而重新使用檢索國家/地區列表的邏輯。

實際上,它需要不費吹灰之力來推廣模型和查看動作。我已經看到很多項目體面地陷入了爲單一目的而創建的數百個組件的混亂中,並且只使用了一次,而許多組件基本上是重複的,因爲開發人員不知道類似的組件已經存在,或者需要稍微不同的邏輯,不想打擾修改舊的代碼。