一般化的MVC
MVC是一種軟件設計典範,是一種業務邏輯和數據顯示分離的方法組織代碼,將業務邏輯被聚集的一個部件裏。在界面和用戶圍繞數據的交互能被改進和個性化定製的同時而不需要重新編寫業務邏輯。
MVC模式的基本流程:
MVC模式每個模塊的功能:
模型(Model):是軟件所處理問題邏輯在獨立於外在顯示內容和形式情況下的內在抽象,封裝了問題的核心數據、邏輯和功能的計算關係,它獨立於具體的界面表達和I/O操作。
視圖(View):是表示模型數據及邏輯關係和狀態的信息及特定形式展示給用戶。它從模型獲得顯示信息,對於相同的信息可以有多個不同的顯示形式或視圖。
控制器(Controller):是用來處理用戶與軟件的交互操作的,其職責是控制提供模型中任何變化的傳播,確保用戶界面於模型間的對應聯繫;它接受用戶的輸入,將輸入反饋給模型,進而實現對模型的計算控制,是使模型和視圖協調工作的部件。通常一個視圖具有一個控制器。
MVC的工作流程:
- 第一步:瀏覽者 -> 調用控制器,對它發出指令
- 第二步:控制器 -> 按指令選取一個合適的模型
- 第三步:模型 -> 按控制器指令取相應數據
- 第四步:控制器 -> 按指令選取相應的視圖
- 第五步:視圖 -> 把第三步取到的數據按用戶想要的樣子顯示出來
JSP的MVC模式流程
所有的操作都會調用service接口,然後調用javaBean操作數據庫。要想實現MVC,最重要的是Web資源包裝器RequestDispatcher,由它解決輸出和跳轉的問題,它將javaBean的處理結果交給JSP(java Server Page),JSP將根據javaBean的指示將內容輸出。Servlet負責將所有的一次性顯示的內容交給JSP完成,那麼最合適的屬性作用域就是request作用域,因爲選擇屬性作用域優先級從大到小分別是:page(pageContext)、request、session、application。
一般使用JSP+JavaBean+Servlet實現JSP中的MVC模式。
JSP下MVC的工作流程:
1、用戶通過提交Requests與Controller組件(通常表現爲Servlets)交互。
2、Controller組件實例化Model組件(通常 表現爲JavaBeans或者類似技術),並且根據應用的邏輯操縱它們。
3、一旦Model被創建,Controller決定下一個爲用戶顯示的View(常常表現爲JSP)
4、View從Controller獲得Model併爲用戶顯示相關數據
MVC模式中各組件具體職責如下:
1.JavaBean(Model)的職責
封裝數據——數據JavaBean
封裝業務——邏輯JavaBean
2.Servlet(Controller)的職責
控制流程,接受請求參數,調用JavaBean,獲取結果數據,並將數據存儲在某個作用域範圍之中,最後選擇頁面顯示
3.JSP(View)的職責
獲取Servlet存儲在某個作用域之中的數據,進行顯示
MVC模式開發主要步驟:
步驟一:開發JavaBean來表示數據和業務;
步驟二:通過Servlet處理請求,讀取請求參數;
步驟三:Servlet調用JavaBean,實現業務邏輯,獲取結果數據;
步驟四:Servlet調用請求、會話等對象的setAttribute方法,將結果數據存儲在某個作用域範圍之中;
步驟五:Servlet選擇合適的JSP頁面,通過RequestDispatcher的forward方法跳轉至該頁面;
步驟六:JSP頁面獲取Servlet存儲的結果數據,進行展示。
以上步驟沒有包含JSP頁面開發,步驟中的操作並非絕對化。比如:【步驟5】中的跳轉方法,Servlet跳轉至JSP的最常用方法是RequestDispatcher.forward,有時也用到response.sendRedirect,兩種方法有所區別。