Spring MVC和Struts2
Web層面的框架學習了三個Struts1和2,SpringMVC,那他們之間肯定存在一個優(yōu)劣和適用的環(huán)境,Struts1和2的異同點我已經做過對比《Struts1和Struts2》,這篇將對比下Struts2和SpringMVC的異同,下面數(shù)據基本來源于網絡,本人是搜集整理所得,供大家參考。
一個項目使用什么樣的技術,決定的因素很多,我所能想到的有:對系統(tǒng)的性能、開發(fā)的效率、團隊學習的成本、業(yè)務場景等,下面盡量從這幾個方面入手,來分析比較下他們之間存在的優(yōu)劣。
首先說性能方面,通過一些測試人員的測試,對Jsp、Struts1、Struts2、SpringMVC的結論如下表:
名稱 | 性能排名 | 結論 |
Jsp | 1 | 越原始效率越高 |
Struts1 | 2 | 采用單例Action模式,且本身的封裝相比struts2簡單,性能穩(wěn)定高效。 |
SpringMVC | 2.5(略遜于struts1) | springMVC有著不比struts2差的開發(fā)效率和解耦度,但性能卻是struts2的好幾倍。 |
Struts2 | 3 | 1.由于采用值棧、OGNL表達式、攔截器等技術對請求參數(shù)的映射和返回結果進行了處理,另外還采用大量的標簽庫等,這些都增加了處理的時間; 2.struts2性能的瓶頸不在于它的多例Action模式 |
從以上性能角度來看,如果項目中使用框架,SpringMVC是首選;如果想把效能提升到最大,jsp是首選。
然后從開發(fā)效率來分析:
開發(fā)效率這點,大家做程序員的一般都會深有體會,越是靠后的產品,一般開發(fā)效率都會高一些,就像我們計算機語言的發(fā)展,從二進制到匯編語言,再到目前主流的java、C#等,都越來越接近人能理解的程度,開發(fā)效率越來越高。因此,從這個觀點出發(fā),得出的結論是:
由快到慢:SpringMVCand Strut2 > Struts1 > jsp
框架的出現(xiàn)很大程度就是為了提升開發(fā)效率,解決純手工代碼帶來的不便,因此Struts1優(yōu)于jsp毫無疑問;Struts2和SpringMVC出現(xiàn)的較晚,都是吸取了Struts1的經驗教訓而來。那Struts2和SpringMVC哪個的開發(fā)效率要更高一些呢?根據大家在網上的體會所得:
由高到低:SpringMVC> Struts2(存疑)
Springmvc可以認為已經100%零配置,但是Struts2并沒有實現(xiàn)這點,SpringMVC高于Struts2具體理由公說公有理婆說婆有理,關于這兩者的開發(fā)效率由于每個人對兩者的熟悉程度不同,因此導致了不同的結果。在我看來,更愿意使用SpringMVC,如果項目中用到了Spring,那就更棒了。
團隊學習成本:
Jsp當然是入門,如果這個都不懂,談學習成本也毫無意義,從我個人來看,如果之前接觸過Struts1和Spring,學習Struts2和SpringMVC的時間成本差不了多少,但是SpringMVC國內用的并不多,因此,相對來說SpringMVC的學習成本要大一些。
由大到小:SpringMVC> Struts2
大家可根據團隊自身目前的情況,自由選擇。上面這兩個框架,不管學哪個,我認為Struts1都應該接觸一下,這樣才能更深的理解MVC框架設計的精妙之處。
業(yè)務場景,只要涉及到業(yè)務,就不能確定哪個框架好,哪個不好,因此,業(yè)務場景只能根據當前業(yè)務,加上對技術的深度理解,找到一款合適的框架為宜。
下面再貼一些Struts2和SpringMVC技術點的異同,其實,這些技術上的不同也正好反映在上面說到的幾點中。
Struts2 | Spring MVC |
類級別的攔截,一個類對應一個request上下文,很難實現(xiàn)restful url,而struts2的架構實現(xiàn)起來要費勁,因為action的一個方法可以對應一個url,而其類屬性卻被所有方法共享,這也就無法用注解或其他方式標識其所屬方法了 | 方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上 spring3 mvc就容易實現(xiàn)restful url |
比較亂,雖然方法之間也是獨立的,但其所有Action變量是共享的,這不會影響程序運行,卻給我們編碼讀程序時帶來麻煩;Struts2在接受參數(shù)的時候,可以用屬性來接受參數(shù),這就說明參數(shù)是讓多個方法共享的 | 方法之間基本上獨立的,獨享request response數(shù)據,請求數(shù)據通過參數(shù)獲取,處理結果通過ModelMap交回給框架,方法之間不共享變量 |
支持手動驗證憑借validate方法和XWork驗證框架 | 驗證也是一個亮點,支持JSR303 處理ajax的請求更是方便只需一個注解@ResponseBody,然后直接返回響應文本即可 |
入口是filter | 入口是servlet |
目前所能整理出來的異同點只有這些,具體的感受需要大家自行嘗試,下附的連接是一篇討論Springmvc和Struts2的帖子,供大家參考。
地址:http://www.iteye.com/topic/646240
轉載于:https://blog.51cto.com/andywuchuanlong/1389530
總結
以上是生活随笔為你收集整理的Spring MVC和Struts2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转python version 2.7
- 下一篇: JSP页面中的pageEncoding和