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