SSM整合,個人總結(jié)和step-創(chuàng)新互聯(lián)

我最近才整合完SSM。

站在用戶的角度思考問題,與客戶深入溝通,找到橋西網(wǎng)站設(shè)計與橋西網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋橋西地區(qū)。

前段時間,分開學(xué)習(xí)了這三個框架,都是看某黃埔軍校的視頻,整合的部分沒看視頻,想自己做。

但是有一些部分自己沒有能完成,主要是如何從spring容器里取出ApplicationContext,這個我的實現(xiàn)比較low,看了看講義,才OK的。

我的實現(xiàn):

[java] view plain copy
WebApplicationContext acc = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
ls = (LoginService) acc.getBean("MyService");
而講義上的實現(xiàn):

[java] view plain copy
@Autowired
@Qualifier("MyService")
private LoginService ls;

public void setLs(LoginService ls) {
this.ls = ls;
}
這里的區(qū)別呢,是我的實現(xiàn)在spring中還要注冊MyService,雖然下面的寫法我貌似。。。沒學(xué)過?好吧應(yīng)該就是注解實現(xiàn)。

這里放上我的Step,給自己看看,就當(dāng)復(fù)習(xí)了。

[plain] view plain copy
2018年5月9日13:08:51

今天寫SSM整合

1.建立項目,添加spring5\springMVC5\Mybatis3的maven

2.寫spring、springmvc、mybatis的配置文件
2.1 spring配置文件,約束,哪里來?
源碼中可以找sxd約束文件,這個的話我在
E:\2017下學(xué)期\spring-framework-5.0.5.RELEASE-dist\spring-framework-5.0.5.RELEASE\docs\spring-framework-reference
找到了,一個bean,一個context
2.2 spring配置文件,導(dǎo)入beans和database
2.3 spring-bean 我先創(chuàng)建一個實體類Person,再注冊(注冊了沒用)
2.4 spring-db 我這里創(chuàng)建數(shù)據(jù)源,但是alt+/出不來提示,我一想,mysql的包沒載入,在maven中加入
還是沒得,恩,我加了jdbc的包,還是沒有,我以為是沒有源碼,下載了,還是沒有提示,棒
沒有提示,我追了下源碼,找set方法,我知道有4個,所以找得到,除此之外,還有一些其他屬性可以設(shè)置
編寫jdbc_mysql.properties文件,并導(dǎo)入
2.5 spring-bean 注冊dao,這個是spring集成mybatis,注冊sqlSession
這里就要導(dǎo)入mybatis和spring的整合包了,這里sqlsession中也要導(dǎo)入mybatis的配置文件
2.6 spring-bean 配置mapper自動掃描
MapperScannerConfigurer將掃描basePackage所指定的包下的所有接口類(包括子類),
如果它們在SQL映射文件中定義過,則將它們動態(tài)定義為一個Spring Bean,
這樣,我們在Service中就可以直接注入映射接口的bean
意思就是可以直接ref="dao類名",給你自動注冊好了
2.7 寫mybatis的配置文件,一個別名,一個映射
約束去×××?dtd文件
2.8 寫spring mvc配置文件,其實就是掃描controller
2.8 到這里,配置文件就寫完了,這里注意的是,java代碼沒開始寫,只是定義了幾個包,dao\service\beans
-------------配置部分完成---------------------

3.編寫service類和對應(yīng)的dao
3.1 寫loginservice接口
3.2 寫實現(xiàn)類,其中有person的dao
3.3 寫persondao,也是個接口
3.4 在spring-bean中注冊接口

4.編寫dao對應(yīng)的mapper
4.1 這里的namespace直接為對應(yīng)dao類的限定名
4.2 mapper中的id和類中方法id一致
4.3 參數(shù)傳遞,用#{}
-------------mybatis部分完成---------------------

4.編寫controller
4.1 這里我寫了個basecontroller用于獲得applicationContext
4.2 就按照一般的,寫了login

5.寫jsp
5.1 寫index
5.2 寫welcome,成功

6.在web.xml中注冊spring\springmvc
6.1 開啟監(jiān)聽事件
6.2 注冊spring
6.3 注冊springmvc

7.跑程序
失敗了1:datasource創(chuàng)建失敗,讀不到驅(qū)動,先把字符串填進去
失敗了2:mybatis的config和mapper頭中不能出現(xiàn)另一個 mapper 對應(yīng) mapper did config 對應(yīng) config did
失敗了3:找不到persondao,bean初始化失敗,dao的Setter忘了寫無法注入
第二個原因,如果類名只有第一個字母大寫,這個時候要寫小寫
ref="personDao" ref="IPersonDao"
失敗了4:不用base這樣的方法拿到容器。。。直接在參數(shù)中加上HttpServletRequest獲取

8.加入springmvc攔截器,只讓有權(quán)限的人進入網(wǎng)頁
8.1 在controller中添加方法
8.2 編寫攔截器類
8.3 在xml中注冊攔截器

*這里我發(fā)現(xiàn)他的spring,就是獲取容器那里好像是不太一樣的,是
@Autowired
@Qualifier("MyService")
private LoginService ls;

public void setLs(LoginService ls) {  
    this.ls = ls;  
}

這一堆東西,我找了找講義,然后把代碼給補上了,除了控制器這里,還有就是業(yè)務(wù)實現(xiàn)類:
@Service("MyService")
public class LoginServiceImp implements LoginService {
@Autowired
private PersonDao pdao;
這樣,當(dāng)然,還有xml配置文件里面,需要把之前手動定義的MyService變成掃描包
<context:component-scan base-package="com.ssmlogin.service" />
這樣,就可以直接用ls了。
mybatis建議用配置文件開發(fā),而springmvc我默認是注釋,spring的注釋也可以看一看

9.添加spring事務(wù),當(dāng)然是為了圖ACDI特性
9.1 編寫spring-tx配置文件,2件事,<!-- 注冊事務(wù)管理器 -->, <!-- 注冊事務(wù)注解驅(qū)動 -->
9.2 在業(yè)務(wù)類名上加上標(biāo)記
9.3 測試事務(wù)性,在注冊類中拋出異常
9.4 controller中寫入注冊方法
失敗了:我按照講義直接加注釋,好像不行,看以前筆記,有個
@Transactional(isolation=Isolation.DEFAULT, propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
可能是缺省的沒有rollbackFor吧。。。

10.添加springmvc異常操作
10.1 在Springmvc中注冊異常捕獲
我發(fā)現(xiàn)我錯了,是直接在controller寫就好了,加上@ExceptionHandler(Exception.class)標(biāo)記
OK

11.springAOP我還沒涉及到,所以有這里再寫個例子
這里寫AOP的對一個類的處理,大概就是獲取具體權(quán)限吧
比如我們權(quán)限有2個級別,登錄是一個級別,買買買是一個級別,
每次執(zhí)行買買買之后,就退出
11.1 導(dǎo)入aspectj的包
11.2 編寫MyAspectJ.java,編寫前置通知、后置通知
11.3 在spring-aspectj.xml中注冊
失敗了:一直不行,配置得好好的,AspectJ可以對service進行攔截,但是對controller不行
這個時候我就在想,因為service畢竟是在容器里注冊了的,但是springmvc里面也有controller的注冊啊
查了半天,恩,aspectj的配置要寫在springmvc的配置文件里面就生效了。。。
絕望嘻嘻嘻

至此,SSM整合,完成。2018年5月10日17:35:08

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章標(biāo)題:SSM整合,個人總結(jié)和step-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://muchs.cn/article18/dphdgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作網(wǎng)站策劃、品牌網(wǎng)站設(shè)計電子商務(wù)、網(wǎng)站排名建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計