十分鐘就能搞定SSM框架原理,作用及使用方法!?。≡俨粚W(xué)就晚了?。?!

\color{red}{作用} :
SSM框架是spring MVC ,spring和mybatis框架的整合,是標(biāo)準(zhǔn)的MVC模式,將整個(gè)系統(tǒng)劃分為表現(xiàn)層,controller層,service層,DAO層四層
使用spring MVC負(fù)責(zé)請(qǐng)求的轉(zhuǎn)發(fā)和視圖管理
spring實(shí)現(xiàn)業(yè)務(wù)對(duì)象管理,mybatis作為數(shù)據(jù)對(duì)象的持久化引擎


\color{red}{原理} :
\color{green}{SpringMVC} :
1.客戶端發(fā)送請(qǐng)求到DispacherServlet(分發(fā)器)
2.由DispacherServlet控制器查詢HanderMapping,找到處理請(qǐng)求的Controller
3.Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView
4.DispacherSerclet查詢視圖解析器,找到ModelAndView指定的視圖
5.視圖負(fù)責(zé)將結(jié)果顯示到客戶端

\color{green}{Spring}: 我們平時(shí)開(kāi)發(fā)接觸最多的估計(jì)就是IOC容器,它可以裝載bean(也就是我們Java中的類,當(dāng)然也包括service dao里面的),有了這個(gè)機(jī)制,我們就不用在每次使用這個(gè)類的時(shí)候?yàn)樗跏蓟苌倏吹疥P(guān)鍵字new。另外spring的aop,事務(wù)管理等等都是我們經(jīng)常用到的。
\color{green}{Mybatis}: mybatis是對(duì)jdbc的封裝,它讓數(shù)據(jù)庫(kù)底層操作變的透明。mybatis的操作都是圍繞一個(gè)sqlSessionFactory實(shí)例展開(kāi)的。mybatis通過(guò)配置文件關(guān)聯(lián)到各實(shí)體類的Mapper文件,Mapper文件中配置了每個(gè)類對(duì)數(shù)據(jù)庫(kù)所需進(jìn)行的sql語(yǔ)句映射。在每次與數(shù)據(jù)庫(kù)交互時(shí),通過(guò)sqlSessionFactory拿到一個(gè)sqlSession,再執(zhí)行sql命令。


\color{red}{使用方法}:
要完成一個(gè)功能:
1.先寫(xiě)實(shí)體類entity,定義對(duì)象的屬性,(\color{gray}{可以參照數(shù)據(jù)庫(kù)中表的字段來(lái)設(shè)置,數(shù)據(jù)庫(kù)的設(shè)計(jì)應(yīng)該在所有編碼開(kāi)始之前})。
2.寫(xiě)Mapper.xml(Mybatis),其中定義你的功能,對(duì)應(yīng)要對(duì)數(shù)據(jù)庫(kù)進(jìn)行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。
3.寫(xiě)Mapper.java,將Mapper.xml中的操作按照id映射成Java函數(shù)。
4.寫(xiě)Service.java,為控制層提供服務(wù),接受控制層的參數(shù),完成相應(yīng)的功能,并返回給控制層。
5.寫(xiě)Controller.java,連接頁(yè)面請(qǐng)求和服務(wù)層,獲取頁(yè)面請(qǐng)求的參數(shù),通過(guò)自動(dòng)裝配,映射不同的URL到相應(yīng)的處理函數(shù),并獲取參數(shù),對(duì)參數(shù)進(jìn)行處理,之后傳給服務(wù)層。
6.寫(xiě)JSP頁(yè)面調(diào)用,請(qǐng)求哪些參數(shù),需要獲取什么數(shù)據(jù)。


\color{blue}{ DataBase ===> Entity ===> Mapper.xml ===> Mapper.Java ===> Service.java ===> Controller.java ===> Jsp.}


\color{red}{Spring MVC} 擁有控制器,作用跟Struts類似,接收外部請(qǐng)求,解析參數(shù)傳給服務(wù)層
\color{red}{Spring} 容器屬于協(xié)調(diào)上下文,管理對(duì)象間的依賴,提供事務(wù)機(jī)制
\color{red}{mybatis} 屬于orm持久層框架,將業(yè)務(wù)實(shí)體 與數(shù)據(jù)表聯(lián)合 起來(lái)

\color{red}{Spring MVC} 控制層,想當(dāng)與\color{red}{Struts} 的作用
\color{red}{Spring } 控制反轉(zhuǎn)和依賴注入 創(chuàng)建對(duì)象交由容器管理,達(dá)到了解耦的作用
\color{red}{mybatis } 主要用來(lái)操作數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)的增刪改查)

\color{red}{IOC }:控制反轉(zhuǎn),是一種降低對(duì)象之間耦合關(guān)系的設(shè)計(jì)思想,面試的時(shí)候最好能說(shuō)出來(lái)個(gè)例子,加深理解。例子:租房子,以前租房子需要一個(gè)房子一個(gè)房子找,費(fèi)時(shí)費(fèi)力,然后現(xiàn)在加入一個(gè)房屋中介,把你需要的房型告訴中介,就可以直接選到需要的房子,中介就相當(dāng)于spring容器。

\color{red}{AOP }:面向切面編程,是面向?qū)ο箝_(kāi)發(fā)的一種補(bǔ)充,它允許開(kāi)發(fā)人員在不改變?cè)瓉?lái)模型的基礎(chǔ)上動(dòng)態(tài)的修改模型以滿足新的需求,如:動(dòng)態(tài)的增加日志、安全或異常處理等。AOP使業(yè)務(wù)邏輯各部分間的耦合度降低,提高程序可重用性,提高開(kāi)發(fā)效率。


\color{red}{持久層 } :DAO層(mapper)
?*DAO層:DAO層主要是做數(shù)據(jù)持久層的工作,負(fù)責(zé)與數(shù)據(jù)庫(kù)進(jìn)行聯(lián)絡(luò)的一些任務(wù)都封裝在此,
?? **DAO層的設(shè)計(jì)首先是設(shè)計(jì)DAO的接口,
? ? **然后在Spring的配置文件中定義此接口的實(shí)現(xiàn)類,
? ? **然后就可在模塊中調(diào)用此接口來(lái)進(jìn)行數(shù)據(jù)業(yè)務(wù)的處理,而不用關(guān)心此接口的具體實(shí)現(xiàn)類是哪個(gè)類,顯得結(jié)構(gòu)非常清晰,
? ? **DAO層的數(shù)據(jù)源配置,以及有關(guān)數(shù)據(jù)庫(kù)連接的參數(shù)都在Spring的配置文件中進(jìn)行配置。
\color{red}{業(yè)務(wù)層 } :Service層
*Service層:Service層主要負(fù)責(zé)業(yè)務(wù)模塊的邏輯應(yīng)用設(shè)計(jì)。
?? **首先設(shè)計(jì)接口,再設(shè)計(jì)其實(shí)現(xiàn)的類
?? **接著再在Spring的配置文件中配置其實(shí)現(xiàn)的關(guān)聯(lián)。這樣我們就可以在應(yīng)用中調(diào)用Service接口來(lái)進(jìn)行業(yè)務(wù)處理。
?? **Service層的業(yè)務(wù)實(shí)現(xiàn),具體要調(diào)用到已定義的DAO層的接口,
?? **封裝Service層的業(yè)務(wù)邏輯有利于通用的業(yè)務(wù)邏輯的獨(dú)立性和重復(fù)利用性,程序顯得非常簡(jiǎn)潔。
\color{red}{表現(xiàn)層} **:Controller層(Handler層)
Controller層:Controller層負(fù)責(zé)具體的業(yè)務(wù)模塊流程的控制,
? *在此層里面要調(diào)用Service層的接口來(lái)控制業(yè)務(wù)流程,
?? **控制的配置也同樣是在Spring的配置文件里面進(jìn)行,針對(duì)具體的業(yè)務(wù)流程,會(huì)有不同的控制器,我們具體的設(shè)計(jì)過(guò)程中可以將流程進(jìn)行抽象歸納,設(shè)計(jì)出可以重復(fù)利用的子單元流程模塊,這樣不僅使程序結(jié)構(gòu)變得清晰,也大大減少了代碼量。
\color{red}{View層}
? *View層 此層與控制層結(jié)合比較緊密,需要二者結(jié)合起來(lái)協(xié)同工發(fā)。View層主要負(fù)責(zé)前臺(tái)jsp頁(yè)面的表示.
\color{red}{各層聯(lián)系}
? *DAO層,Service層這兩個(gè)層次都可以單獨(dú)開(kāi)發(fā),互相的耦合度很低,完全可以獨(dú)立進(jìn)行,這樣的一種模式在開(kāi)發(fā)大項(xiàng)目的過(guò)程中尤其有優(yōu)勢(shì)
? *Controller,View層因?yàn)轳詈隙缺容^高,因而要結(jié)合在一起開(kāi)發(fā),但是也可以看作一個(gè)整體獨(dú)立于前兩個(gè)層進(jìn)行開(kāi)發(fā)。這樣,在層與層之前我們只需要知道接口的定義,調(diào)用接口即可完成所需要的邏輯單元應(yīng)用,一切顯得非常清晰簡(jiǎn)單。
? *Service邏輯層設(shè)計(jì)
?? **Service層是建立在DAO層之上的,建立了DAO層后才可以建立Service層,而Service層又是在Controller層之下的,因而Service層應(yīng)該既調(diào)用DAO層的接口,又要提供接口給Controller層的類來(lái)進(jìn)行調(diào)用,它剛好處于一個(gè)中間層的位置。每個(gè)模型都有一個(gè)Service接口,每個(gè)接口分別封裝各自的業(yè)務(wù)處理方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容