淺談MVC, Spring MVC,
阿新 • • 發佈:2018-08-14
效率 .com 動態生成 操作 int 權限 驅動 tor spa
一個典型的java web 從架構上看起來應該是這個樣子:
1. web瀏覽器發送http請求到服務端, 被controller(servlet)獲取並進行處理.
2. Controller (Servlet)調用核心業務邏輯 model部分.
3. Model進行數據庫存取操作, 並將操作結果返回給model.
4. Controller將業務邏輯處理結果交給view(JSP), 動態輸出HTML內容.
5. 動態生成的HTML內容返回到瀏覽器中顯示.
Spring MVC提供了一個DispacherServlet(可以Spring MVC是以Servlet技術為基礎的),這個Servlet把Web應用中Servlet中經常要實現的功能封裝起來並提供一層公共抽象,想象對應於一個Web請求後端要做的事情,比如:- URL映射(對應HTTP URL和方法,應該調用什麽代碼)
- 權限驗證(當前的URL是否允許當前用戶訪問)
- 參數解析(如何從Servlet中獲得參數)
- 數據綁定(如何將Servlet中的參數,綁定到業務邏輯對象中)
- 數據驗證(判斷數據是否符合業務規則,比如郵件格式是否正確)
- 視圖解析(使用哪個視圖模板進行渲染)
- 模型傳遞與視圖渲染(將數據傳遞給模板,並且在模板中引用)
- ...
POJO是Plain Old Java Object的縮寫,是軟件開發大師Martin Fowler提出的一個概念,指的是一個普通Java類。也就說,你隨便編寫一個Java類,就可以稱之為POJO。之所以要提出這樣一個專門的術語,是為了與基於重量級開發框架的代碼相區分,比如EJB,我們編寫的類一般都要求符合特定編碼規範,實現特定接口、繼承特定基類,而POJO則可以說是百無禁忌,靈活方便。
而ORM的作用就非常直觀了,無須贅述,如圖所示它提供了與數據庫操作的一層中間抽象,這樣Model的代碼自然會更加簡單。Spring MVC基本可以幫你屏蔽Servlet的API,ORM則可以幫你屏蔽JDBC的API了,也就是說你在更高的抽象層次上寫程序了,更高的抽象層次一般意味著以更符合我們思維的方式來思考,自然效率更高。這事實上是軟件技術發展的一個重要驅動力之一。你想想,從匯編語言發展出高級語言,從文件系統發展出數據庫,其實本質規律是類似的。
圖中的每一個小方塊其實都是大量的Java類來實現,Controller與Model之間,Model與數據訪問對象之間的這些箭頭,意味這些Java類之間存在大量復雜的依賴關系。Spring的核心功能依賴註入,正是用於管理Java對象之間的依賴關系,所以第一部分我們說Spring是一個一站式的粘合框架,它像神奇的膠水一樣,可以以松耦合的方式有機的粘合在一起。
淺談MVC, Spring MVC,