2013-01-23 110 views
2

我正在使用MVC模式在JSP中嘗試一個項目。JSP中MVC中的控制器

在聯機教程,它有一個servlet作爲控制器,其在其doPost()方法

  • 從模型
  • 訪問數據將其放在請求範圍和最後
  • 重定向到查看(一個JSP頁面)

然後,JSP頁面訪問在請求範圍中添加的參數,並將該對象的內容顯示在d希望的佈局。

Q1: 但是在這種方法中,每個視圖都會有一個控制器,我的意思是每個JSP都會有一個servlet。這是不錯的做法嗎?或者我應該爲許多視圖設置單個控制器,並使視圖通過控制器將通過標題發送命令值給控制器,控制器將使用該控制器決定通過模型訪問哪些內容以及接下來要生成的視圖。

Q2: servlets是實現Controller的標準方式嗎?什麼是建立控制器的其他選項?什麼更常用?

+0

相關:http://stackoverflow.com/questions/3541077/design-patterns-web-based-applications/3542297#3542297 – BalusC

回答

1

這是同樣的問題,當我在進入Java EE的初期;-)

看來你已經直接映射到控制器的概念,servlet,它可以在您的樣本項目真。但是對於一個更現實的項目來說,這是不真實和可維護的。所以對於我的下面的回答,請記住,控制器和servlet是兩個不同的概念,我打算先回答你的第二個問題。

Q2:

由於servlet映射必須在web.xml中被硬編碼,這是非常困擾(?我的意思是,你喜歡寫Java代碼,然後XML的東西,右),時下主流的MVC框架(支柱,Spring MVC等)都採用了類似的單個「調度程序」servlet實踐。

此Servlet引導框架,加載您的自定義控制器,然後您的整個應用程序仍然存在。這個調度程序servlet負責根據不同的請求路徑,查詢參數找到正確的控制器,並將其命名。

Q1:

對於每個視圖的一個控制器或一個控制器給多個視圖中,對沒有單個的最佳做法。我的建議是,只要你能保持你的代碼清潔和一致,選擇適合你的項目的任何策略。畢竟,這是對你的代碼進行組織的嘗試。

控制器和視圖是分離問題的兩個不同層面,對嗎?順便說一下,我強烈建議你選擇任何主流的MVC框架的設計文檔,我認爲他們可以做一個更好的工作來解釋你的謎題。

外部參考:

http://www.jpalace.org/docs/articles/mvc/mvc.html這是實現調度的servlet一個偉大的文章。它實際上使用MVC設計模式構建了一個非常小但完整的框架。 http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html上面的圖表很好地解釋了調度程序servlet在框架中的作用。

+0

是否有純JSP中的單個調度控制器的在線示例(我的意思是沒有任何現成的框架)?只是想看看那些dispathcer代碼是怎麼樣的或者應該如何理解確切的機制(儘管我可以猜測它是把if放在請求路徑上並簡單地調用適當的控制器)還有什麼是「主流MVC框架的設計文檔「?框架像struts和Spring? – Mahesha999

+0

@JerryTian +1好解釋 – Bhushan

+0

@ Mahesha999我添加了一些外部參考資料,希望它有幫助。 –