springMVC 與 struts+hibernate+spring優缺點


springMVC:

 Spring 框架是高度可配置的,而且包含多種視圖技術,例如 JavaServer Pages(JSP)技術、Velocity、Tiles、iText 和POI。Spring MVC 框架並不知道使用的視圖,所以你可以自主的選擇視圖。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。系統框架 springmvc mybatis Bootstrap html5 shiro maven SSM下載地址 

struts+spring+hiberante:

 SSH 框架的系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層,以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。 其中使用Struts作為系統的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,控制業務跳轉,利用Hibernate框架對持久層提供 支持,Spring做管理,管理struts和hibernate。具體做法是:用面向對象的分析方法根據需求提出一些模型,將這些模型實現為基本的 Java對象,然后編寫基本的DAO(Data Access Objects)接口,並給出Hibernate的DAO實現,采用Hibernate架構實現的DAO類來實現Java類與數據庫之間的轉換和訪問,最 后由Spring做管理,管理struts和hibernate。

優缺點總結:

1,基於注解,stuts2雖然也有注解但是比較慢,沒人用更多的時候是用xml的形式 
2,能與spring其它技術整合比如說webflow等, 
3,獲取request及session對象比較簡單,直接當參數值傳入就行了,而struts2還需要通過ServletActionContext 對象獲取 
4,驗證也比較簡單,通過jsr-303就能實現,而不必寫其它的代碼,而struts2是通過寫 actionName-validation.xml實現的 
在說struts2的優點: 
1,不必關注客戶端是get提交還是set提交,springMvc的地址映射注解method是必須要被關注的 
2,自動封裝對象,springMvc,是封裝在model里的只能在,所以會看到input框的數字類型有0或是0.0的選項 
3,自定義結果類型,如xml什么的而springmvc確只能返回modelandView,或是不返回 
4,將視圖與結果解耦,因為struts2返回的是字符串,只有通過struts.xml才知道具體的是哪一個jsp,或是html,而springMvc只能明確的返回modelAndview 
5,struts2 不需要專門的中文過濾器,而springMvc3需要配置 
針對標簽來說它們大同小異,但是當需要自動裝配時 springMnc的form表單是必須使用的,而struts2則不用,其它功能上差不多,但效率上,springMvc的標簽比struts2快因 為,struts2通過request建立了堆和棧,所以效率上有所下降,我推薦還是用jsp自帶標簽不僅易於擴展而且,效率也不錯 
再說應用場景:如果都是成功之后跳一個頁面的那兩者都可以,而如果是其它的類型,那么struts2是一個不錯的選擇,舉個例子來說 Extjs4.0 增加對象自動裝配struts2能實現,但springMvc就不行,除非你喜歡大量的request.getParamter()

 

6,性能:

 

spring會稍微比struts快。 spring mvc是基於方法的設計 , 而sturts是基於類 , 每次發一次請求都會實例一個action,每個action都會被注入屬性,而spring基於方法,粒度更細,但要小心把握像在servlet控制數據 一樣。spring3mvc是方法級別的攔截,攔截到方法后根據參數上的注解,把request數據注入進去,在spring3mvc中,一個方法對應一 個request上下文。而struts2框架是類級別的攔截,每次來了請求就創建一個Action,然后調用settergetter方法把 request中的數據注入; struts2實際上是通過setter getter方法與request打交道的 ,而springmvc 不用 setter getter 方法 ;struts2中,一個Action對象對應一個request上下文。

 

實現restful:

 

springmvc是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上 spring3 mvc就容易實現restful url 。 struts2 是類級別的攔截,一個類對應一個 request 上下文;實現restfulurl 要費勁,因為 struts2 action 的一個方法可以對應一個 url ;而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標識其所屬方法了。

 

數據共享:

 

struts是在接受參數的時候,可以用屬性來接受參數,這就說明參數是讓多個方法共享的。

 

spring3 mvc的方法之間基本上獨立的,獨享request response數據,請求數據通過參數獲取,處理結果通過ModelMap交回給框架方法之間不共享變量

小結:

 

 其實用什么技術,這一點真的沒有硬性的要求,有人覺得struts好用,有人就覺得springMVC先進。總的來說,實現的功能都是大體一致的。有時候 架構師一直使用struts,為了項目的穩定,就一直沿用;而一些先進分子總是喜歡在項目中常識新的技術,也促進了這項技術的發展。單就struts和 springMVC來說,都是controller層的框架,作用都是接收request請求,中間調用業務邏輯代碼,最后返回reponse響應,不用 刻意遠離SSH,也不用一味追求Spring MVC。總之,合適的就是最好的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM