文章目錄
- 一、MVC
- 二、SpringMVC
- 參考文獻
在我們平時的javaWeb項目中。我們似乎用到了mvc模式,但是具體在哪裡用到了卻又傻傻分不清?。Controller,View層倒是好區分,可model層呢?service、Dao有事個什麼玩意兒??于是寫下了這篇文章,讓我們帶着問題開始吧?!
- 什麼是mvc
- 什麼是springMVC
- springMVC它解決了什麼問題
- springMVC它的原理是什麼
一、MVC
一般我們都知道
- C代表Controller:負責轉發請求,對請求進行處理。
- V代表View:視圖,用于展示。
那M呢?以前一直以為Model就是用來承接資料的,就是一些單純的java類用于對于資料庫中的表。然而,并不是這樣的。完整的Model應該還要包含對資料直接通路的權力,例如對資料庫的通路。
然而問題來了,我業務邏輯寫在哪裡啊,是C還是M❓。
由于C隻是一個個控制器,不負責業務,它隻負責安排人來執行任務。是以我們将複雜業務邏輯寫在M中
萬一有負責的業務邏輯呢?這勢必會導緻M層有複雜的方法。并且,為了代碼複用,可以将資料庫方法提取出來,這樣就産生了Dao層。相當于此時M層又被分解了,一部分叫做Dao,另一部分叫做Entity,另一部分叫做Service。
- Dao:進行資料庫通路
- Entity:用于承載資料,對應資料庫中的表
- Service:編寫程式應有的功能(實作算法等等)
二、SpringMVC
SpringMVC是一個實作了MVC設計模式都輕量級Web架構。
其工作流程如下:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90zZihGbHJGcG1WW2Z0VhRDbHFmeW5WW2R2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2MjN2ETMyITMwMTMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 使用者通過浏覽器向伺服器發送請求,請求會被Spring MVC的前端控制器DispatcherServlet所攔截;
- DispatcherServlet攔截到請求後,會調用HandlerMapping處理器映射器;
- 處理器映射器根據請求URL找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一并傳回給DispatcherServlet;
- DispatcherServlet會通過傳回資訊選擇合适的HandlerAdapter(處理器擴充卡);
- HandlerAdapter會調用并執行Handler(處理器),這裡的處理器指的就是程式中編寫的Controller類,也被稱之為後端控制器;
- Controller執行完成後,會傳回一個ModelAndView對象,該對象中會包含視圖名或包含模型和視圖名;
- HandlerAdapter将ModelAndView對象傳回給DispatcherServlet;
- DispatcherServlet會根據ModelAndView對象選擇一個合适的ViewReslover(視圖解析器);
- ViewReslover解析後,會向DispatcherServlet中傳回具體的View(視圖);
- DispatcherServlet對View進行渲染(即将模型資料填充至視圖中);
- 視圖渲染結果會傳回給用戶端浏覽器顯示。
參考文獻
MVC -維基百科
MVC引入SERVICE層 提高代碼重用性 溝通CONTROL和MODEL
Spring MVC 4.2.4.RELEASE 中文文檔
《Java EE企業級應用開發教程Spring+Spring MVC+MyBatis》