javascript
浅谈Spring MVC知识
關于MVC框架,我相信大家都不陌生,都會說也就是模型-視圖-控制器這三層的框架結構,如果你參加面試的時候考官會問:“MVC框架是什么?你說一說。”其實我們都知道這個問題還需要問的,只要你是一個開發(fā)人員,都知道MVC框架是什么,考官會問什么呢?他會問:“你了解Spring MVC的工作原理嗎?你給我說一說?!笨赡苓@個時候有些人還不知道Sring MVC的工作原理是什么?現(xiàn)在我就淺談一下,讀者看了之后這篇文章之后,如果覺得有什么地方寫的不對,希望大家給我指出來,畢竟相互學習,才能更近一步。閉門造車,只會原地踏步,我也是查看了一些資料之后。在說Spring MVC的相關知識之前,我們先來談一談MVC三層框架結構的知識。
1.mvc框架
(1)介紹
MVC也就是模型-視圖-控制器(Model-View-Controller)架構模式的開發(fā)模型,實現(xiàn)了模型和視圖的徹底分離,結構清晰。
Model(模型)是用于處理業(yè)務邏輯的部分。所以在開發(fā)的時候我們把業(yè)務邏輯放在Model層,這樣可以提高業(yè)務邏輯的復用,代碼量也會相應的減少。對于數(shù)據(jù)庫而言往往還存在事務的機制,為了適應這樣的變化,設計者會把模型層再細分為兩層,即服務層( Service )和數(shù)據(jù)訪問層( DAO )
View(視圖)是用于從Model層中返回回來的Beand對象進行數(shù)據(jù)處理顯示的部分,通過視圖解析器來進行處理的,通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。
Controller(控制器)是用于處理用戶交互的部分??刂破髫撠煆目蛻舳藗鬟^來的Request請求中讀取數(shù)據(jù),控制用戶輸入,并向Model模型發(fā)送數(shù)據(jù)。
(2)原理圖
?
?
2.Spring MVC框架
流程和組件是SpringMVC 的核心, SpringMVC的流程是圍繞DispatcherServlet 而工作的,所以在Spring MVC 中DispatcherServlet 就是其最重要的內(nèi)容。
?
?
(1)客戶端的所有請求都交給前端控制器DispatcherServlet來處理,它會負責調(diào)用系統(tǒng)的其他模塊來真正處理用戶的請求。?
(2)DispatcherServlet收到請求后,將根據(jù)請求的信息(包括URL、HTTP協(xié)議方法、請求頭、請求參數(shù)、Cookie等),通過HandlerMapping機制找到處理該請求的控制器(或其方法)進行響應。只是通過HandlerMapping 返回的是一個HandlerExecutionChain 對象。
HandlerExecutionChain源碼:
package org.springframework.web.servlet ; /**** imports ****/ public class HandlerExecutionChain {// 日志private static final Log logger = LogFactory.getLog(HandlerExecutionChain.class);// 處理器private final Object handler;// 攔截器數(shù)組 @Nullableprivate HandlerInterceptor[] interceptors;// 攔截器列表 @Nullableprivate List<HandlerInterceptor> interceptorList;// 攔截器當前下標private int interceptorIndex = -1;.... }?
(3)HandlerAdapter是一個適配器,它用統(tǒng)一的接口對HandlerExecutionChain對象中所包含的處理器進行調(diào)用。?
(4)Handler完成對用戶請求的處理后,會返回一個ModelAndView對象給DispatcherServlet.
(5) ModelAndView的視圖是邏輯視圖,DispatcherServlet還要借助ViewResolver視圖解析器完成從邏輯視圖到真實視圖對象的解析工作。?
(6)當?shù)玫秸嬲囊晥D對象后,DispatcherServlet會利用視圖對象對模型數(shù)據(jù)進行渲染。?
(7)客戶端得到響應,可能是一個普通的HTML頁面,也可以是XML或JSON字符串,還可以是一張圖片或者一個PDF文件。
?
轉(zhuǎn)載于:https://www.cnblogs.com/javJoker/p/10486142.html
總結
以上是生活随笔為你收集整理的浅谈Spring MVC知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bias技能目标 该目标运用技巧一览
- 下一篇: 法拉第未来将在纳斯达克挂牌上市