我們看招聘信息的時候,經(jīng)常會看到這一點这溅,需要具備SSH框架的技能;而且在大部分教學(xué)課堂中棒仍,也會把SSH作為最核心的教學(xué)內(nèi)容悲靴。 但是,我們在實際應(yīng)用中發(fā)現(xiàn)莫其,SpringMVC可以完全替代Struts癞尚,配合注解的方式,編程非陈叶福快捷浇揩,而且通過restful風(fēng)格定義url,讓地址看起來非常優(yōu)雅憨颠。 另外胳徽,MyBatis也可以替換Hibernate积锅,正因為MyBatis的半自動特點,我們程序猿可以完全掌控SQL养盗,這會讓有數(shù)據(jù)庫經(jīng)驗的程序猿能開發(fā)出高效率的SQL語句缚陷,而且XML配置管理起來也非常方便。 好了往核,如果你也認(rèn)同我的看法蹬跃,那么下面我們一起來做整合吧!
請點擊此處輸入圖片描述
在寫代碼之前我們先了解一下這三個框架分別是干什么的铆铆? 相信大以前也看過不少這些概念蝶缀,我這就用大白話來講,如果之前有了解過可以跳過這一大段薄货,直接看代碼翁都!
SpringMVC:它用于web層,相當(dāng)于controller(等價于傳統(tǒng)的servlet和struts的action)谅猾,用來處理用戶請求柄慰。舉個例子,用戶在地址欄輸入http://網(wǎng)站域名/login税娜,那么springmvc就會攔截到這個請求坐搔,并且調(diào)用controller層中相應(yīng)的方法,(中間可能包含驗證用戶名和密碼的業(yè)務(wù)邏輯敬矩,以及查詢數(shù)據(jù)庫操作概行,但這些都不是springmvc的職責(zé)),最終把結(jié)果返回給用戶弧岳,并且返回相應(yīng)的頁面(當(dāng)然也可以只返回json/xml等格式數(shù)據(jù))凳忙。springmvc就是做前面和后面過程的活,與用戶打交道G菥妗涧卵!
Spring:太強大了,以至于我無法用一個詞或一句話來概括它腹尖。但與我們平時開發(fā)接觸最多的估計就是IOC容器柳恐,它可以裝載bean(也就是我們java中的類,當(dāng)然也包括service dao里面的)热幔,有了這個機制乐设,我們就不用在每次使用這個類的時候為它初始化,很少看到關(guān)鍵字new断凶。另外spring的aop伤提,事務(wù)管理等等都是我們經(jīng)常用到的。
MyBatis:如果你問我它跟鼎鼎大名的Hibernate有什么區(qū)別认烁?我只想說肿男,他更符合我的需求介汹。第一,它能自由控制sql舶沛,這會讓有數(shù)據(jù)庫經(jīng)驗的人(當(dāng)然不是說我啦捂臉)編寫的代碼能搞提升數(shù)據(jù)庫訪問的效率嘹承。第二,它可以使用xml的方式來組織管理我們的sql如庭,因為一般程序出錯很多情況下是sql出錯叹卷,別人接手代碼后能快速找到出錯地方,甚至可以優(yōu)化原來寫的sql坪它。
請容小編發(fā)條小東西哈骤竹,不要介意!
獲取源碼往毡,項目講解蒙揣,知識點分享,學(xué)習(xí)交流开瞭,那就加入小編的Java學(xué)習(xí)交流群吧懒震!
616 959 444
SSM框架整合配置
好了,前面bb那么多嗤详,下面我們真正開始敲代碼了~
首先我們打開IED个扰,我這里用的是eclipse(你們應(yīng)該也是用的這個,對嗎葱色?)递宅,創(chuàng)建一個動態(tài)web項目,建立好相應(yīng)的目錄結(jié)構(gòu)(重點6病)
請點擊此處輸入圖片描述
(打了馬賽克是因為這里還用不到恐锣,你們不要那么污好不好?)
我說一下每個目錄都有什么用吧(第一次畫表格舞痰,我發(fā)現(xiàn)markdown的表格語法很不友好呀~) 這個目錄結(jié)構(gòu)同時也遵循maven的目錄規(guī)范~
文件名作用
src根目錄,沒什么好說的诀姚,下面有main和test响牛。
main主要目錄,可以放java代碼和一些資源文件赫段。
java存放我們的java代碼呀打,這個文件夾要使用Build Path -> Use as Source Folder,這樣看包結(jié)構(gòu)會方便很多糯笙,新建的包就相當(dāng)于在這里新建文件夾咯贬丛。
resources存放資源文件,譬如各種的spring给涕,mybatis豺憔,log配置文件额获。
mapper存放dao中每個方法對應(yīng)的sql,在這里配置恭应,無需寫daoImpl抄邀。
spring這里當(dāng)然是存放spring相關(guān)的配置文件,有dao service web三層昼榛。
sql其實這個可以沒有境肾,但是為了項目完整性還是加上吧。
webapp這個貌似是最熟悉的目錄了胆屿,用來存放我們前端的靜態(tài)資源奥喻,如jsp js css。
resources這里的資源是指項目的靜態(tài)資源非迹,如js css images等环鲤。
WEB-INF很重要的一個目錄,外部瀏覽器無法訪問彻秆,只有羨慕內(nèi)部才能訪問楔绞,可以把jsp放在這里,另外就是web.xml了唇兑。你可能有疑問了酒朵,為什么上面java中的resources里面的配置文件不妨在這里,那么是不是會被外部竊取到扎附?你想太多了蔫耽,部署時候基本上只有webapp里的會直接輸出到根目錄,其他都會放入WEB-INF里面留夜,項目內(nèi)部依然可以使用classpath:XXX來訪問匙铡,好像IDE里可以設(shè)置部署輸出目錄,這里扯遠(yuǎn)了~
test這里是測試分支碍粥。
java測試java代碼鳖眼,應(yīng)遵循包名相同的原則,這個文件夾同樣要使用Build Path -> Use as Source Folder嚼摩,這樣看包結(jié)構(gòu)會方便很多钦讳。
resources沒什么好說的,好像也很少用到枕面,但這個是maven的規(guī)范愿卒。
我先新建好幾個必要的包,并為大家講解一下每個包的作用潮秘,順便理清一下后臺的思路~
請點擊此處輸入圖片描述
包名名稱作用
dao數(shù)據(jù)訪問層(接口)與數(shù)據(jù)打交道琼开,可以是數(shù)據(jù)庫操作,也可以是文件讀寫操作枕荞,甚至是redis緩存操作柜候,總之與數(shù)據(jù)操作有關(guān)的都放在這里搞动,也有人叫做dal或者數(shù)據(jù)持久層都差不多意思。為什么沒有daoImpl改橘,因為我們用的是mybatis滋尉,所以可以直接在配置文件中實現(xiàn)接口的每個方法。
entity實體類一般與數(shù)據(jù)庫的表相對應(yīng)飞主,封裝dao層取出來的數(shù)據(jù)為一個對象狮惜,也就是我們常說的pojo险毁,一般只在dao層與service層之間傳輸割按。
dto數(shù)據(jù)傳輸層剛學(xué)框架的人可能不明白這個有什么用晾捏,其實就是用于service層與web層之間傳輸叁征,為什么不直接用entity(pojo)?其實在實際開發(fā)中發(fā)現(xiàn)意鲸,很多時間一個entity并不能滿足我們的業(yè)務(wù)需求廓鞠,可能呈現(xiàn)給用戶的信息十分之多口四,這時候就有了dto魁瞪,也相當(dāng)于vo穆律,記住一定不要把這個混雜在entity里面,答應(yīng)我好嗎导俘?
service業(yè)務(wù)邏輯(接口)寫我們的業(yè)務(wù)邏輯峦耘,也有人叫bll,在設(shè)計業(yè)務(wù)接口時候應(yīng)該站在“使用者”的角度旅薄。額辅髓,不要問我為什么這里沒顯示!IDE調(diào)皮我也拿它沒辦法~
serviceImpl業(yè)務(wù)邏輯(實現(xiàn))實現(xiàn)我們業(yè)務(wù)接口少梁,一般事務(wù)控制是寫在這里洛口,沒什么好說的。
web控制器springmvc就是在這里發(fā)揮作用的凯沪,一般人叫做controller控制器第焰,相當(dāng)于struts中的action。
還有最后一步基礎(chǔ)工作妨马,導(dǎo)入我們相應(yīng)的jar包樟遣,我使用的是maven來管理我們的jar,所以只需要在
pom.xml
中加入相應(yīng)的依賴就好了身笤,如果不使用maven的可以自己去官網(wǎng)下載相應(yīng)的jar,放到項目WEB-INF/lib目錄下葵陵。關(guān)于maven的學(xué)習(xí)大家可以看慕課網(wǎng)的視頻教程液荸,這里就不展開了。我把項目用到的jar都寫在下面脱篙,版本都不是最新的娇钱,大家有經(jīng)驗的話可以自己調(diào)整版本號伤柄。另外,所有jar都會與項目一起打包放到我的github上文搂,喜歡的給個star吧~
pom.xml
請點擊此處輸入圖片描述
下面真的要開始進(jìn)行編碼工作了适刀,堅持到這里辛苦大家了~
第一步:我們先在spring文件夾里新建
spring-dao.xml文件,因為spring的配置太多煤蹭,我們這里分三層笔喉,分別是dao service web。
讀入數(shù)據(jù)庫連接相關(guān)參數(shù)(可選)
配置數(shù)據(jù)連接池
配置連接屬性硝皂,可以不讀配置項文件直接在這里寫死
配置c3p0常挚,只配了幾個常用的
配置SqlSessionFactory對象(mybatis)
掃描dao層接口,動態(tài)實現(xiàn)dao接口稽物,也就是說不需要daoImpl奄毡,sql和參數(shù)都寫在xml文件上
spring-dao.xm
請點擊此處輸入圖片描述
因為數(shù)據(jù)庫配置相關(guān)參數(shù)是讀取配置文件,所以在resources文件夾里新建一個
jdbc.properties文件贝或,存放我們4個最常見的數(shù)據(jù)庫連接屬性吼过,這是我本地的,大家記得修改呀~還有喜歡傳到github上“大頭蝦們”記得刪掉密碼咪奖,不然別人就很容易得到你服務(wù)器的數(shù)據(jù)庫配置信息盗忱,然后干一些羞羞的事情,你懂的I募琛售淡!
jdbc.properties
請點擊此處輸入圖片描述
友情提示:
配置文件中的jdbc.username,如果寫成username慷垮,可能會與系統(tǒng)環(huán)境中的username變量沖突揖闸,所以到時候真正連接數(shù)據(jù)庫的時候,用戶名就被替換成系統(tǒng)中的用戶名(有得可能是administrator)料身,那肯定是連接不成功的汤纸,這里有個小坑,我被坑了一晚上G垩贮泞!
因為這里用到了mybatis,所以需要配置mybatis核心文件幔烛,在recources文件夾里新建mybatis-config.xml文件啃擦。
使用自增主鍵
使用列別名
開啟駝峰命名轉(zhuǎn)換 create_time -> createTime
mybatis-config.xml
請點擊此處輸入圖片描述
第二步:剛弄好dao層,接下來到service層了饿悬。在
spring
文件夾里新建
spring-service.xml
文件令蛉。
掃描service包所有注解 @Service
配置事務(wù)管理器,把事務(wù)管理交由spring來完成
配置基于注解的聲明式事務(wù),可以直接在方法上@Transaction
spring-service.xml
獲取源碼珠叔,項目講解蝎宇,知識點分享,學(xué)習(xí)交流祷安,那就加入小編的Java學(xué)習(xí)交流群吧姥芥!
616 959 444
第三步:配置web層,在spring文件夾里新建spring-web.xml文件汇鞭。
開啟SpringMVC注解模式凉唐,可以使用@RequestMapping,@PathVariable虱咧,@ResponseBody等
對靜態(tài)資源處理熊榛,如js,css腕巡,jpg等
配置jsp 顯示ViewResolver玄坦,例如在controller中某個方法返回一個string類型的"login",實際上會返回"/WEB-INF/login.jsp"
掃描web層 @Controller
spring-web.xml
第四步:最后就是修改web.xml文件了绘沉,它在webapp的WEB-INF下煎楣。
web.xml
請點擊此處輸入圖片描述
我們在項目中經(jīng)常會使用到日志,所以這里還有配置日志xml车伞,在resources文件夾里新建logback.xml文件择懂,所給出的日志輸出格式也是最基本的控制臺s呼出。
logback.xml
請點擊此處輸入圖片描述
到目前為止另玖,我們一共寫了7個配置文件困曙,我們一起來看下最終的配置文件結(jié)構(gòu)圖。
請點擊此處輸入圖片描述
好了谦去,今天就寫到這里了慷丽!內(nèi)容是有點長哈,不過感興趣想學(xué)的小伙伴還請堅持觀看呀鳄哭!
接下來會跟大家講這種框架的應(yīng)用實例哦要糊!想知道我會用什么來實例嗎?
獲取本篇完整版內(nèi)容妆丘,學(xué)習(xí)交流锄俄,那就加入小編的Java學(xué)習(xí)交流群吧!
616 959 444
欲知后續(xù)如何勺拣,請聽下回分解奶赠!