1,先說(shuō)說(shuō)你的表示層 其實(shí)沒(méi)有必要使用struts,除非你有歷史遺留問(wèn)題不得不用struts,因?yàn)閟pring的mvc已經(jīng)足夠好了: a.清晰的模型對(duì)象傳遞,這個(gè)模型對(duì)象可以是任何java對(duì)象,如果你不在意在各層之間傳遞同一個(gè)對(duì)象的話(huà),這個(gè)模型對(duì)象就可以是hibernate的persistent object,通過(guò)open session in view,你可以以一致的方式使用業(yè)務(wù)模型對(duì)象。 b.reference data,讓你清晰的處理look up數(shù)據(jù)。 c. 多種可供選擇的視圖解析類(lèi)型,可以在prpperties文件中定義page的邏輯名,或者定義在xml文件里的struts tiles邏輯名。 d.無(wú)干擾的數(shù)據(jù)綁定,一個(gè)<spring:bind>可以對(duì)模型對(duì)象和form進(jìn)行綁定,就像struts自動(dòng)填充formbean一樣,但spring 的綁定功能不會(huì)干擾界面布局,也就是說(shuō),你仍然可以使用html編輯器對(duì)頁(yè)面進(jìn)行處理。 e.客戶(hù)端驗(yàn)證。 f.服務(wù)器端驗(yàn)證。 g.多種可供選擇的控制器,其中支持表單的控制器提供了類(lèi)似vb中表單事件處理的功能,這是一系列的workflow,在你認(rèn)為合適的地方,插入你的處理代碼。 spring mvc與struts比較,可能只是少了很多taglib和頁(yè)面布局,但這都可以通過(guò)第三方工具補(bǔ)充,因?yàn)橐晥D相比于其他部分,畢竟更輕量級(jí)一些??梢赃x擇的第三方工具可以是:displaytag,struts-menu,struts tiles,等等。 2,在說(shuō)說(shuō)業(yè)務(wù)邏輯部分 業(yè)務(wù)邏輯類(lèi)可以用spring的beans進(jìn)行配置,并由spring管理與表現(xiàn)層的控制器及更下層的DAO對(duì)象的關(guān)系。另外,還可以進(jìn)行配置性的事務(wù)處理,一個(gè)interceptor配置,免去了你的所有煩惱。 3,dao層 用spring 封裝后的hibernate API,讓Hibernate繼續(xù)瘦身,并且通過(guò)spring建立與上層的關(guān)系。 4,最后,說(shuō)說(shuō)hibernate的po 你可以選擇你喜歡的任何方式進(jìn)行建模,以下工具提供了足夠的支持: a. 從java對(duì)象到hbm文件:xdoclet b. 從hbm文件到j(luò)ava對(duì)象:hibernate extension c. 從數(shù)據(jù)庫(kù)到hbm文件:middlegen d. 從hbm文件到數(shù)據(jù)庫(kù):SchemaExport 至于可供參考的項(xiàng)目,可以看看spring的例子petclinic(spring+hibernate),還有一個(gè)不可不看的網(wǎng)站:http:///wiki/Wiki.jsp?page=AppFuse(struts+spring+hibernate或spring mvc + spring +hibernate)。另外,spring帶的mvc step-by-step是一個(gè)很好的入門(mén)教程。 需要說(shuō)明的是,spring僅僅為我們提供了一種設(shè)計(jì)和實(shí)現(xiàn)框架的方式,因此,項(xiàng)目的成功與否,是與我們的構(gòu)架設(shè)計(jì)緊密相關(guān)的,在有了好的設(shè)計(jì)思想以后,善用spring,會(huì)讓我們的成功來(lái)的更容易。 |
|
來(lái)自: 昵稱(chēng)662 > 《我的圖書(shū)館》