![基于Struts2和iBATIS的JSP開發(fā)框架設(shè)計(jì)體系的開發(fā)_第1頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/25/9347b8a0-b943-476c-ba0b-52529969319a/9347b8a0-b943-476c-ba0b-52529969319a1.gif)
![基于Struts2和iBATIS的JSP開發(fā)框架設(shè)計(jì)體系的開發(fā)_第2頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/25/9347b8a0-b943-476c-ba0b-52529969319a/9347b8a0-b943-476c-ba0b-52529969319a2.gif)
![基于Struts2和iBATIS的JSP開發(fā)框架設(shè)計(jì)體系的開發(fā)_第3頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/25/9347b8a0-b943-476c-ba0b-52529969319a/9347b8a0-b943-476c-ba0b-52529969319a3.gif)
![基于Struts2和iBATIS的JSP開發(fā)框架設(shè)計(jì)體系的開發(fā)_第4頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/25/9347b8a0-b943-476c-ba0b-52529969319a/9347b8a0-b943-476c-ba0b-52529969319a4.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于Struts2和iBATIS的JSP開發(fā)框架設(shè)計(jì)體系的開發(fā)JSP(Java Server Pages)是常見的B/S架構(gòu)(Browser/Server架構(gòu))【1】實(shí)現(xiàn)技術(shù)之一。在筆者為學(xué)校開發(fā)獎(jiǎng)助貸系統(tǒng);和認(rèn)證考試報(bào)名系統(tǒng);等JSP應(yīng)用系統(tǒng)的過程中,遇到了以下問題:(1)為系統(tǒng)所有模塊增加、修改或者移除一個(gè)功能時(shí),需要改動(dòng)大量代碼,異常處理分散,當(dāng)異常處理方式改變時(shí),代碼修改量也很大;(2)系統(tǒng)中需要大量動(dòng)態(tài)拼接SQL語句,在Java中拼接sql語句非常繁瑣,而且容易出錯(cuò);(3)業(yè)務(wù)邏輯處理和數(shù)據(jù)存取之間的接口耦合度高,多個(gè)開發(fā)人員之間溝通成本也很高。筆者通過對已開發(fā)的兩個(gè)項(xiàng)目進(jìn)行研究,設(shè)
2、計(jì)了一個(gè)簡單的JSP開發(fā)框架,來解決上述三個(gè)問題。1 關(guān)鍵技術(shù)簡介1.1 MVC和Struts2框架MVC框架模式全稱是Model-View-Controller【2】。其中,Model表示業(yè)務(wù)邏輯和數(shù)據(jù)存取,View表示數(shù)據(jù)顯示,Controller連接Model和View兩部分。MVC把數(shù)據(jù)顯示(V)和數(shù)據(jù)(M)隔離,同時(shí)也把兩者之間的聯(lián)系(C)獨(dú)立出來,三個(gè)部分各司其職,互不干擾。Struts2框架【3】對應(yīng)于Controller部分。它通過編寫XML配置文件,控制頁面跳轉(zhuǎn)。Struts2的配置代碼示例如下:method=query/list_s.jsp/list_t.jspStruts
3、2的攔截器機(jī)制還能對所有請求做相同的處理【4】。Struts2的攔截器機(jī)制如圖1所示。圖1 Struts2攔截器原理圖1中虛線框起來的部分顯示,攔截器可以在Action調(diào)用前后增加一些功能模塊。使用攔截器,不需要每個(gè)Action自己去調(diào)用這些功能模塊,而是由Struts2的配置自動(dòng)為Action增加這些模塊。這可以解決引言中提出的第一個(gè)問題。1.2 iBATIS框架iBATIS是一個(gè)持久層框架。筆者所在學(xué)校的Web應(yīng)用程序,其數(shù)據(jù)都來自數(shù)據(jù)中心,數(shù)據(jù)庫結(jié)構(gòu)對外是不開放的,僅對外提供必需的SQL語句。這種情況下Hibernate等框架并不適用。iBATIS是半自動(dòng)化的【5】。它實(shí)現(xiàn)的是業(yè)務(wù)對象和
4、SQL語句的映射,非常適合處理這類情況。iBATIS采用的是在SQL語句中使用iBATIS標(biāo)簽來拼接SQL語句,示例代碼如下:select * from t1 where 1=1column1 = #A#從上述代碼可以看出,iBATIS比Java拼接SQL語句更簡潔,也沒有單引號匹配、遺漏逗號等問題。2 JSP應(yīng)用開發(fā)框架設(shè)計(jì)按照MVC的思想,數(shù)據(jù)顯示和業(yè)務(wù)處理是相互獨(dú)立的,分開后可以降低耦合度,把Model所代表的業(yè)務(wù)邏輯和數(shù)據(jù)存取分開,可以進(jìn)一步降低耦合度。因此,在筆者設(shè)計(jì)的框架中,后臺(tái)采用了比較流行的Action-Service-Dao三層結(jié)構(gòu)。開發(fā)框架結(jié)構(gòu)如圖2所示。圖2 JSP應(yīng)用開
5、發(fā)框架結(jié)構(gòu)圖2.1 異常處理系統(tǒng)運(yùn)行過程中有可能會(huì)遇到網(wǎng)絡(luò)中斷,數(shù)據(jù)庫崩潰等業(yè)務(wù)無關(guān)的問題,還有可能出現(xiàn)用戶查找的數(shù)據(jù)不存在、重復(fù)提交數(shù)據(jù)等業(yè)務(wù)相關(guān)的錯(cuò)誤??蚣芴峁┝私y(tǒng)一的方式處理這些異常和錯(cuò)誤??蚣艿漠惓L幚斫Y(jié)構(gòu)如圖3所示。圖3 異常處理結(jié)構(gòu)圖圖3中的SystemException和BusinessException是自定義的兩個(gè)異常類,分別表示業(yè)務(wù)無關(guān)的異常和業(yè)務(wù)相關(guān)的錯(cuò)誤。這兩個(gè)異常類不需要有任何的實(shí)質(zhì)性的處理,只需要能記錄異常信息即可。2.2 Dao層接口設(shè)計(jì)Dao層的接口BasicDao僅提供五個(gè)方法:public interface BasicDaopublic List sele
6、ct(BasicVO vo);public int selectCount(BasicVO vo);public void insert(BasicVO vo);public void update(BasicVO vo);public void delete(BasicVO vo);這樣設(shè)計(jì),避免了Dao層方法過度重載和對外接口頻繁改動(dòng)。Dao層接口簡單固定,所以Service層無需等待Dao層完全實(shí)現(xiàn)就可以進(jìn)行編碼和初步測試,開發(fā)過程中也不需要和Dao層的開發(fā)人員進(jìn)行過多溝通。假如某個(gè)具體的Dao層的類因?yàn)樾阅芑蛘咂渌颍枰鄠€(gè)性化方法,可以自行添加其他方法。3 JSP應(yīng)用開發(fā)框架的
7、實(shí)現(xiàn)實(shí)現(xiàn)這個(gè)框架,需要為其加上統(tǒng)一的權(quán)限驗(yàn)證和異常處理功能,并使用iBATIS框架實(shí)現(xiàn)Dao層。3.1 權(quán)限驗(yàn)證和異常處理權(quán)限驗(yàn)證應(yīng)該添加在每次Action調(diào)用之前,而異常處理應(yīng)該是捕獲Action拋出的異常,發(fā)生在Action調(diào)用之后。這兩個(gè)功能都可以借助Struts2的攔截器機(jī)制實(shí)現(xiàn)。因?yàn)闄?quán)限驗(yàn)證和異常處理是針對整個(gè)系統(tǒng)的,所以筆者在同一個(gè)攔截器MyInterceptor里實(shí)現(xiàn)(也可以分在兩個(gè)攔截器里實(shí)現(xiàn))。MyInterceptor的核心代碼如下:public class MyInterceptorextends AbstractInterceptor Overridepublic St
8、ring intercept(ActionInvocation arg0)String result = success;;int errorType = 0;if(用戶未登錄)result = error;;errorType = nologin;; else if(用戶沒有權(quán)限)result = error;;errorType = noauthor;; else tryresult = arg0.invoke(); catch(Exception e)result = error;;errorType = exception;;return result;系統(tǒng)中不管是出現(xiàn)異常還是業(yè)務(wù)相關(guān)
9、的錯(cuò)誤(包括未登錄和沒有權(quán)限),MyInterceptor都會(huì)返回error;。在Struts2里配置error對應(yīng)的result是一個(gè)鏈?zhǔn)秸埱髆ngerror.action,接下來就會(huì)進(jìn)入mngerror對應(yīng)的方法去處理。3.2 Dao層具體實(shí)現(xiàn)首先用iBATIS的配置文件SqlMapConfig.xml創(chuàng)建一個(gè)SqlMapClient對象,核心代碼如下:Reader reader = Resources.getResourceAsReader(SqlMapConfig.xml);SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMap
10、Client(reader);reader.close();接下來,在方法里使用sqlMapper進(jìn)行增刪改查等操作:sqlMapper.queryForList(select;, vo);sqlMapper.queryForObject(selectCount;, vo);sqlMapper.insert(insert;, vo);. .4 結(jié)語目前,該框架已經(jīng)在項(xiàng)目中得到了實(shí)際應(yīng)用,筆者利用這個(gè)框架,重新開發(fā)了學(xué)校的獎(jiǎng)助貸管理系統(tǒng)和等級考試報(bào)名系統(tǒng)。該框架提高了Web應(yīng)用程序的靈活性和擴(kuò)展性,也大大縮短了開發(fā)周期。如何提高框架中數(shù)據(jù)存取的性能和效率是筆者下一步著重要考慮的問題。參考文獻(xiàn):【1】徐秀敏,郝赫,曹占峰,尹洪苓,朱大勇.基于三層B/S的規(guī)劃計(jì)劃信息管理平臺(tái).計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(4):51-54.【2】丁振凡.基于SpringMVC的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng).計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(2):178-181.【3】丁波,晁愛農(nóng).基于Struts2框架的AJAX開發(fā)研究.計(jì)算機(jī)工程與設(shè)計(jì),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通銀行跨境貿(mào)易融資合同
- 產(chǎn)品銷售戰(zhàn)略合作伙伴合同范本
- 2025年房屋租賃調(diào)整協(xié)議范例
- 2025年多功能打印機(jī)維護(hù)與修理協(xié)議詳述
- 2025年電子競技賽事版權(quán)協(xié)議范本
- 2025年寵物領(lǐng)養(yǎng)協(xié)議書
- 個(gè)人房屋抵押貸款合同-樣本模板
- 中國銀行抵押合同
- 個(gè)人商業(yè)用房擔(dān)保借款合同
- 交通樞紐監(jiān)控設(shè)備安裝及維護(hù)合同
- 廈門弘愛醫(yī)院硼中子俘獲治療系統(tǒng)項(xiàng)目環(huán)境影響報(bào)告
- 《中國高考評價(jià)體系》解讀(化學(xué)學(xué)科)
- 企業(yè)人員測評理論與方法
- 你好法語第七課課件
- 圖形創(chuàng)意(高職藝術(shù)設(shè)計(jì)類)PPT完整全套教學(xué)課件
- 環(huán)境空氣顆粒物(PM10、PM2.5)自動(dòng)監(jiān)測手工比對核查技術(shù)規(guī)范
- 水上水下作業(yè)應(yīng)急預(yù)案
- Jane-Eyre簡愛英文課件
- (小學(xué))人教版一年級下冊數(shù)學(xué)《認(rèn)識鐘表》課件
- 2022年?duì)I口市大學(xué)生??紝U锌荚囌骖}及答案
- API520-安全閥計(jì)算PART1(中文版)
評論
0/150
提交評論