



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于Struts2和iBATIS的JSP開發(fā)框架設(shè)計體系的開發(fā)JSP(Java Server Pages)是常見的B/S架構(gòu)(Browser/Server架構(gòu))【1】實現(xiàn)技術(shù)之一。在筆者為學(xué)校開發(fā)獎助貸系統(tǒng);和認證考試報名系統(tǒng);等JSP應(yīng)用系統(tǒng)的過程中,遇到了以下問題:(1)為系統(tǒng)所有模塊增加、修改或者移除一個功能時,需要改動大量代碼,異常處理分散,當(dāng)異常處理方式改變時,代碼修改量也很大;(2)系統(tǒng)中需要大量動態(tài)拼接SQL語句,在Java中拼接sql語句非常繁瑣,而且容易出錯;(3)業(yè)務(wù)邏輯處理和數(shù)據(jù)存取之間的接口耦合度高,多個開發(fā)人員之間溝通成本也很高。筆者通過對已開發(fā)的兩個項目進行研究,設(shè)
2、計了一個簡單的JSP開發(fā)框架,來解決上述三個問題。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)隔離,同時也把兩者之間的聯(lián)系(C)獨立出來,三個部分各司其職,互不干擾。Struts2框架【3】對應(yīng)于Controller部分。它通過編寫XML配置文件,控制頁面跳轉(zhuǎn)。Struts2的配置代碼示例如下:method=query/list_s.jsp/list_t.jspStruts
3、2的攔截器機制還能對所有請求做相同的處理【4】。Struts2的攔截器機制如圖1所示。圖1 Struts2攔截器原理圖1中虛線框起來的部分顯示,攔截器可以在Action調(diào)用前后增加一些功能模塊。使用攔截器,不需要每個Action自己去調(diào)用這些功能模塊,而是由Struts2的配置自動為Action增加這些模塊。這可以解決引言中提出的第一個問題。1.2 iBATIS框架iBATIS是一個持久層框架。筆者所在學(xué)校的Web應(yīng)用程序,其數(shù)據(jù)都來自數(shù)據(jù)中心,數(shù)據(jù)庫結(jié)構(gòu)對外是不開放的,僅對外提供必需的SQL語句。這種情況下Hibernate等框架并不適用。iBATIS是半自動化的【5】。它實現(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è)計按照MVC的思想,數(shù)據(jù)顯示和業(yè)務(wù)處理是相互獨立的,分開后可以降低耦合度,把Model所代表的業(yè)務(wù)邏輯和數(shù)據(jù)存取分開,可以進一步降低耦合度。因此,在筆者設(shè)計的框架中,后臺采用了比較流行的Action-Service-Dao三層結(jié)構(gòu)。開發(fā)框架結(jié)構(gòu)如圖2所示。圖2 JSP應(yīng)用開
5、發(fā)框架結(jié)構(gòu)圖2.1 異常處理系統(tǒng)運行過程中有可能會遇到網(wǎng)絡(luò)中斷,數(shù)據(jù)庫崩潰等業(yè)務(wù)無關(guān)的問題,還有可能出現(xiàn)用戶查找的數(shù)據(jù)不存在、重復(fù)提交數(shù)據(jù)等業(yè)務(wù)相關(guān)的錯誤??蚣芴峁┝私y(tǒng)一的方式處理這些異常和錯誤??蚣艿漠惓L幚斫Y(jié)構(gòu)如圖3所示。圖3 異常處理結(jié)構(gòu)圖圖3中的SystemException和BusinessException是自定義的兩個異常類,分別表示業(yè)務(wù)無關(guān)的異常和業(yè)務(wù)相關(guān)的錯誤。這兩個異常類不需要有任何的實質(zhì)性的處理,只需要能記錄異常信息即可。2.2 Dao層接口設(shè)計Dao層的接口BasicDao僅提供五個方法: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è)計,避免了Dao層方法過度重載和對外接口頻繁改動。Dao層接口簡單固定,所以Service層無需等待Dao層完全實現(xiàn)就可以進行編碼和初步測試,開發(fā)過程中也不需要和Dao層的開發(fā)人員進行過多溝通。假如某個具體的Dao層的類因為性能或者其他原因,需要更多個性化方法,可以自行添加其他方法。3 JSP應(yīng)用開發(fā)框架的
7、實現(xiàn)實現(xiàn)這個框架,需要為其加上統(tǒng)一的權(quán)限驗證和異常處理功能,并使用iBATIS框架實現(xiàn)Dao層。3.1 權(quán)限驗證和異常處理權(quán)限驗證應(yīng)該添加在每次Action調(diào)用之前,而異常處理應(yīng)該是捕獲Action拋出的異常,發(fā)生在Action調(diào)用之后。這兩個功能都可以借助Struts2的攔截器機制實現(xiàn)。因為權(quán)限驗證和異常處理是針對整個系統(tǒng)的,所以筆者在同一個攔截器MyInterceptor里實現(xiàn)(也可以分在兩個攔截器里實現(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、的錯誤(包括未登錄和沒有權(quán)限),MyInterceptor都會返回error;。在Struts2里配置error對應(yīng)的result是一個鏈式請求mngerror.action,接下來就會進入mngerror對應(yīng)的方法去處理。3.2 Dao層具體實現(xiàn)首先用iBATIS的配置文件SqlMapConfig.xml創(chuàng)建一個SqlMapClient對象,核心代碼如下:Reader reader = Resources.getResourceAsReader(SqlMapConfig.xml);SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMap
10、Client(reader);reader.close();接下來,在方法里使用sqlMapper進行增刪改查等操作:sqlMapper.queryForList(select;, vo);sqlMapper.queryForObject(selectCount;, vo);sqlMapper.insert(insert;, vo);. .4 結(jié)語目前,該框架已經(jīng)在項目中得到了實際應(yīng)用,筆者利用這個框架,重新開發(fā)了學(xué)校的獎助貸管理系統(tǒng)和等級考試報名系統(tǒng)。該框架提高了Web應(yīng)用程序的靈活性和擴展性,也大大縮短了開發(fā)周期。如何提高框架中數(shù)據(jù)存取的性能和效率是筆者下一步著重要考慮的問題。參考文獻:【1】徐秀敏,郝赫,曹占峰,尹洪苓,朱大勇.基于三層B/S的規(guī)劃計劃信息管理平臺.計算機系統(tǒng)應(yīng)用,2013,22(4):51-54.【2】丁振凡.基于SpringMVC的網(wǎng)絡(luò)存儲系統(tǒng).計算機系統(tǒng)應(yīng)用,2013,22(2):178-181.【3】丁波,晁愛農(nóng).基于Struts2框架的AJAX開發(fā)研究.計算機工程與設(shè)計,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國采鹽行業(yè)市場運營狀況及發(fā)展趨勢分析報告
- 2025-2030年中國酒店用品行業(yè)運行態(tài)勢及發(fā)展前景分析報告
- 2025-2030年中國過硫酸鹽行業(yè)運行狀況及發(fā)展前景分析報告
- 2025-2030年中國輕質(zhì)碳酸鈣行業(yè)競爭態(tài)勢與營銷策略研究報告
- 2025-2030年中國車輛專用照明及電氣信號設(shè)備制造市場十三五規(guī)劃與發(fā)展策略分析報告
- 2025-2030年中國螺絲刀行業(yè)運行狀況及前景趨勢分析報告
- 2025-2030年中國船舶租賃市場運行現(xiàn)狀及發(fā)展趨勢預(yù)測報告
- 2025-2030年中國膨化食品市場運營狀況與發(fā)展策略分析報告
- 2025-2030年中國紙漿產(chǎn)業(yè)運行狀況與前景趨勢分析報告
- 2025-2030年中國糧食烘干機械行業(yè)運行現(xiàn)狀及發(fā)展前景預(yù)測報告
- 2024年工業(yè)廢水處理工(技師)技能鑒定理論考試題庫-上(單選題)
- 醫(yī)院CT機房裝飾改造工程施工組織設(shè)計
- 基坑監(jiān)測總結(jié)報告
- 2024年華師大版九年級數(shù)學(xué)下冊全冊教案
- 合肥市廬陽區(qū)雙崗街道社區(qū)工作者招聘考試試題及答案2024
- JBT 106-2024 閥門的標(biāo)志和涂裝(正式版)
- 煤礦技術(shù)員必須會的知識
- (高清版)JTGT 3650-01-2022 公路橋梁施工監(jiān)控技術(shù)規(guī)程
- 2024年黑龍江建筑職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫全面
- 北京市2024小升初數(shù)學(xué)模擬試卷一
- 一年級口算題100以內(nèi)比大小
評論
0/150
提交評論