javascript
大剑无锋----SpringMVC原理详细解析
SpringMVC
談到這個(gè)問題,我們不得不提提之前 Model1 和 Model2 這兩個(gè)沒有 Spring MVC 的時(shí)代。
?
----Model1 時(shí)代?: 很多學(xué) Java 后端比較晚的朋友可能并沒有接觸過 Model1 模式下的 JavaWeb 應(yīng)用開發(fā)。在 Model1 模式下,整個(gè) Web 應(yīng)用幾乎全部用 JSP 頁面組成,只用少量的 JavaBean 來處理數(shù)據(jù)庫連接、訪問等操作。這個(gè)模式下 JSP 即是控制層又是表現(xiàn)層。顯而易見,這種模式存在很多問題。比如①將控制邏輯和表現(xiàn)邏輯混雜在一起,導(dǎo)致代碼重用率極低;②前端和后端相互依賴,難以進(jìn)行測(cè)試并且開發(fā)效率極低;
?
----Model2 時(shí)代?:學(xué)過 Servlet 并做過相關(guān) Demo 的朋友應(yīng)該了解“Java Bean(Model)+ JSP(View,)+Servlet(Controller) ”這種開發(fā)模式,這就是早期的 JavaWeb MVC 開發(fā)模式。Model:系統(tǒng)涉及的數(shù)據(jù),也就是 dao 和 bean。View:展示模型中的數(shù)據(jù),只是用來展示。Controller:處理用戶請(qǐng)求都發(fā)送給 ,返回?cái)?shù)據(jù)給 JSP 并展示給用戶。
?
Model2 模式下還存在很多問題,Model2的抽象和封裝程度還遠(yuǎn)遠(yuǎn)不夠,使用Model2進(jìn)行開發(fā)時(shí)不可避免地會(huì)重復(fù)造輪子,這就大大降低了程序的可維護(hù)性和復(fù)用性。于是很多JavaWeb開發(fā)相關(guān)的 MVC 框架應(yīng)該運(yùn)而生比如Struts2,但是 Struts2 比較笨重。隨著 Spring 輕量級(jí)開發(fā)框架的流行,Spring 生態(tài)圈出現(xiàn)了 Spring MVC 框架, Spring MVC 是當(dāng)前最優(yōu)秀的 MVC 框架。相比于 Struts2 , Spring MVC 使用更加簡(jiǎn)單和方便,開發(fā)效率更高,并且 Spring MVC 運(yùn)行速度更快。
?
MVC 是一種設(shè)計(jì)模式,Spring MVC 是一款很優(yōu)秀的 MVC 框架。Spring MVC 可以幫助我們進(jìn)行更簡(jiǎn)潔的Web層的開發(fā),并且它天生與 Spring 框架集成。Spring MVC 下我們一般把后端項(xiàng)目分為 Service層(處理業(yè)務(wù))、Dao層(數(shù)據(jù)庫操作)、Entity層(實(shí)體類)、Controller層(控制層,返回?cái)?shù)據(jù)給前臺(tái)頁面)。
?
對(duì)于springMVC簡(jiǎn)單原理的圖示,我比較喜歡之前在網(wǎng)上看到的以為大V的圖:
?
那么SpringMVC web的原理呢,還是這位大佬的圖示和解釋:
?
?
?
流程說明(重要):
1.客戶端(瀏覽器)發(fā)送請(qǐng)求,直接請(qǐng)求到?DispatcherServlet(前端控制器)。
2.DispatcherServlet?根據(jù)請(qǐng)求信息調(diào)用?HandlerMapping(處理器映射器),解析請(qǐng)求對(duì)應(yīng)的?Handler。
3.解析到對(duì)應(yīng)的?Handler(也就是我們平常說的?Controller?控制器)后,開始由?HandlerAdapter?(處理器適配器)處理。
4.HandlerAdapter?會(huì)根據(jù)?Handler來調(diào)用真正的處理器開處理請(qǐng)求,并處理相應(yīng)的業(yè)務(wù)邏輯。
處理器處理完業(yè)務(wù)后,會(huì)返回一個(gè)?ModelAndView?對(duì)象,Model?是返回的數(shù)據(jù)對(duì)象,View?是個(gè)邏輯上的?View。
5.ViewResolver?(視圖解析器)會(huì)根據(jù)邏輯?View?查找實(shí)際的?View。
6.DispaterServlet?把返回的?Model?傳給?View(視圖渲染)。
7.把?View?返回給請(qǐng)求者(瀏覽器)
?
總結(jié)
以上是生活随笔為你收集整理的大剑无锋----SpringMVC原理详细解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大剑无锋之浅析Cookie/Sessio
- 下一篇: springMVC——SpringMVC