更新時(shí)間:2020-03-17 10:04:42 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2590次
SpringWebMVC是一種基于Java的實(shí)現(xiàn)了WebMVC設(shè)計(jì)模式的請(qǐng)求驅(qū)動(dòng)類型的輕量級(jí)Web框架,即使用了MVC架構(gòu)模式的思想,將web層進(jìn)行職責(zé)解耦,基于請(qǐng)求驅(qū)動(dòng)指的就是使用請(qǐng)求-響應(yīng)模型,框架的目的就是幫助我們簡(jiǎn)化開發(fā),SpringWebMVC也是要簡(jiǎn)化我們?nèi)粘eb開發(fā)的。
模型(Model)封裝了應(yīng)用程序的數(shù)據(jù)和一般他們會(huì)組成的POJO。
視圖(View)是負(fù)責(zé)呈現(xiàn)模型數(shù)據(jù)和一般它生成的HTML輸出,客戶端的瀏覽器能夠解釋。
控制器(Controller)負(fù)責(zé)處理用戶的請(qǐng)求,并建立適當(dāng)?shù)哪P停阉鼈鬟f給視圖渲染。
Spring的web模型-視圖-控制器(MVC)框架是圍繞著處理所有的HTTP請(qǐng)求和響應(yīng)的DispatcherServlet的設(shè)計(jì)。
SpringWebMVC處理請(qǐng)求的流程
具體執(zhí)行步驟如下:
1、首先用戶發(fā)送請(qǐng)求————>前端控制器,前端控制器根據(jù)請(qǐng)求信息(如URL)來決定選擇哪一個(gè)頁(yè)面控制器進(jìn)行處理并把請(qǐng)求委托給它,即以前的控制器的控制邏輯部分;圖2-1中的1、2步驟;
2、頁(yè)面控制器接收到請(qǐng)求后,進(jìn)行功能處理,首先需要收集和綁定請(qǐng)求參數(shù)到一個(gè)對(duì)象,這個(gè)對(duì)象在SpringWebMVC中叫命令對(duì)象,并進(jìn)行驗(yàn)證,然后將命令對(duì)象委托給業(yè)務(wù)對(duì)象進(jìn)行處理;處理完畢后返回一個(gè)ModelAndView(模型數(shù)據(jù)和邏輯視圖名);圖2-1中的3、4、5步驟;
3、前端控制器收回控制權(quán),然后根據(jù)返回的邏輯視圖名,選擇相應(yīng)的視圖進(jìn)行渲染,并把模型數(shù)據(jù)傳入以便視圖渲染;圖2-1中的步驟6、7;
4、前端控制器再次收回控制權(quán),將響應(yīng)返回給用戶,圖2-1中的步驟8;至此整個(gè)結(jié)束。
二、Spring
2.1、IOC容器:
IOC容器就是具有依賴注入功能的容器,IOC容器負(fù)責(zé)實(shí)例化、定位、配置應(yīng)用程序中的對(duì)象及建立這些對(duì)象間的依賴。應(yīng)用程序無(wú)需直接在代碼中new相關(guān)的對(duì)象,應(yīng)用程序由IOC容器進(jìn)行組裝。在Spring中BeanFactory是IOC容器的實(shí)際代表者。
2.2、AOP:
簡(jiǎn)單地說,就是將那些與業(yè)務(wù)無(wú)關(guān),卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯或責(zé)任封裝起來,便于減少系統(tǒng)的重復(fù)代碼,降低模塊間的耦合度,并有利于未來的可操作性和可維護(hù)性。AOP代表的是一個(gè)橫向的關(guān)系
AOP用來封裝橫切關(guān)注點(diǎn),具體可以在下面的場(chǎng)景中使用:
Authentication權(quán)限
Caching緩存
Contextpassing內(nèi)容傳遞
Errorhandling錯(cuò)誤處理
Lazyloading懶加載
Debugging調(diào)試
logging,tracing,profilingandmonitoring記錄跟蹤優(yōu)化校準(zhǔn)
Performanceoptimization性能優(yōu)化
Persistence持久化
Resourcepooling資源池
Synchronization同步
Transactions事務(wù)
三、Mybatis
MyBatis是支持普通SQL查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡(jiǎn)單的XML或注解用于配置和原始映射,將接口和Java的POJOs(PlainOldJavaObjects,普通的Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。
總體流程:
(1)加載配置并初始化
觸發(fā)條件:加載配置文件
將SQL的配置信息加載成為一個(gè)個(gè)MappedStatement對(duì)象(包括了傳入?yún)?shù)映射配置、執(zhí)行的SQL語(yǔ)句、結(jié)果映射配置),存儲(chǔ)在內(nèi)存中。
(2)接收調(diào)用請(qǐng)求
觸發(fā)條件:調(diào)用Mybatis提供的API
傳入?yún)?shù):為SQL的ID和傳入?yún)?shù)對(duì)象
處理過程:將請(qǐng)求傳遞給下層的請(qǐng)求處理層進(jìn)行處理。
(3)處理操作請(qǐng)求
觸發(fā)條件:API接口層傳遞請(qǐng)求過來
傳入?yún)?shù):為SQL的ID和傳入?yún)?shù)對(duì)象
處理過程:
(A)根據(jù)SQL的ID查找對(duì)應(yīng)的MappedStatement對(duì)象。
(B)根據(jù)傳入?yún)?shù)對(duì)象解析MappedStatement對(duì)象,得到最終要執(zhí)行的SQL和執(zhí)行傳入?yún)?shù)。
?獲取數(shù)據(jù)庫(kù)連接,根據(jù)得到的最終SQL語(yǔ)句和執(zhí)行傳入?yún)?shù)到數(shù)據(jù)庫(kù)執(zhí)行,并得到執(zhí)行結(jié)果。
(D)根據(jù)MappedStatement對(duì)象中的結(jié)果映射配置對(duì)得到的執(zhí)行結(jié)果進(jìn)行轉(zhuǎn)換處理,并得到最終的處理結(jié)果。
(E)釋放連接資源。
(4)返回處理結(jié)果將最終的處理結(jié)果返回
MyBatis最強(qiáng)大的特性之一就是它的動(dòng)態(tài)語(yǔ)句功能。如果您以前有使用JDBC或者類似框架的經(jīng)歷,您就會(huì)明白把SQL語(yǔ)句條件連接在一起是多么的痛苦,要確保不能忘記空格或者不要在columns列后面省略一個(gè)逗號(hào)等。動(dòng)態(tài)語(yǔ)句能夠完全解決掉這些痛苦。
以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java最新框架視頻教程下載”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743