xmlhttp webwork spring hibernate-項(xiàng)目總結(jié)- -
最近剛幫公司的一個(gè)行政管理項(xiàng)目做了一個(gè)技術(shù)架構(gòu):
展現(xiàn)層技術(shù):JSP+XMLHTTP,復(fù)用了公司已有g(shù)ird控件和XForm技術(shù)。
Web層框架:靈活的WebWork當(dāng)然是我的首選
中間層框架:Spring框架,主要使用它的Bean管理功能,完善的Hibernate的基礎(chǔ)設(shè)施,以及強(qiáng)大的事務(wù)管理功能。
持久層框架:成熟的Hibernate
總結(jié):
1、表單數(shù)據(jù)通過(guò)XMLHTTP生成了一個(gè)完整的xml文件,傳遞到后臺(tái)的Action。我們做了一個(gè)xml數(shù)據(jù)的Interceptor,將xml數(shù)據(jù)自動(dòng)設(shè)置到Action的屬性中(這里的屬性通常就是實(shí)體)。
在這里,我要順便說(shuō)一句:在項(xiàng)目剛開(kāi)始沒(méi)有考慮使用XMLHTTP技術(shù),視圖只用JSP。后來(lái)應(yīng)美工mm的要求,使用了公司的grid控件,我們的Action沒(méi)有改動(dòng)一行代碼,加了一個(gè)Interceptor輕松搞定。再次讓我深切體會(huì)了WebWork的靈活。
2、這個(gè)架構(gòu)中沒(méi)有DTO這一層,我們?cè)贏ction中直接使用實(shí)體作為FormBean,當(dāng)然,如果一個(gè)表單對(duì)應(yīng)多個(gè)實(shí)體,為了展現(xiàn)的需要我們還是會(huì)構(gòu)造一些DTO的,DTO只在必要的時(shí)候使用。
3、事務(wù)管理放在Action這一層,做了一個(gè)事務(wù)管理的Interceptor。它在Action執(zhí)行之前打開(kāi)事務(wù),在Action執(zhí)行之后Result執(zhí)行之前提交事務(wù)。這樣,每個(gè)Action方法是一個(gè)完整的事務(wù)單元,又可以避免頁(yè)面編譯出現(xiàn)的異常導(dǎo)致事務(wù)回滾。
4、模塊化管理主要通過(guò)xwork.xml定義文件中的include標(biāo)簽和ApplicationContext.xml文件的import標(biāo)簽來(lái)實(shí)現(xiàn)。
5、這個(gè)項(xiàng)目組的成員都第一次使用WebWork,學(xué)習(xí)能力強(qiáng)的并且熟悉類(lèi)似Web框架(例如Struts)的同事,可以快速上手,遇到問(wèn)題,簡(jiǎn)單的點(diǎn)一下馬上就能明白。但對(duì)一個(gè)只簡(jiǎn)單掌握Struts的新手,卻需要一個(gè)相對(duì)較長(zhǎng)的學(xué)習(xí)周期。特別是對(duì)Interceptor自動(dòng)通過(guò)表達(dá)式語(yǔ)言將數(shù)據(jù)組裝到Action的屬性中不能理解,我明明說(shuō)的很清楚了,他卻總是持有懷疑,認(rèn)為只有手工從request取數(shù)據(jù)心里才踏實(shí)。當(dāng)然,做過(guò)一個(gè)模塊之后WebWork的原理就慢慢熟悉了,也開(kāi)始驚嘆WebWork的功能強(qiáng)大和靈活。
6、還有一個(gè)有待討論的問(wèn)題:在這樣的架構(gòu)中,Service層是否必要。因?yàn)槲覀兊南到y(tǒng)很少有所謂的業(yè)務(wù)邏輯(流程的操作已在WorkflowService中提供)。記得Potian說(shuō)過(guò)Service層應(yīng)該盡可能的薄,最主要是提供事務(wù)的功能。但在我們這個(gè)應(yīng)用中,事務(wù)是在Action層實(shí)現(xiàn),Service層似乎沒(méi)有起到任何作用,甚至很多只是對(duì)DAO的一個(gè)包裝而已。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。