記得很多很多年前,在java Web開發(fā)的世界里,SSH(Struts、SPRing、Hibernate、)這個框架是很火的?火到什么程度呢?在當時你如果說不懂SSH,你都不好意思說你是搞Java Web發(fā)的。現(xiàn)在回想起來,這個框架實在是太過扯蛋!而且扯得蛋很疼!導(dǎo)致至今仍有很多很多Java Web開發(fā)者前撲后繼的去學(xué)習這個架構(gòu)!
我是一個寫了很多年程序的老程序員,我對這個現(xiàn)象感到很痛心!僅僅是因為我們的程序員同學(xué)都太過依賴舊的技術(shù),不愿與時俱進!
下面我們來分析SSH為什么會這么流行?又怎么樣來改變這個現(xiàn)狀?
Struts是MVC模式web框架公認的標準,在Spring還沒有出來的時候。Struts已經(jīng)很流行了,大大小小的web項目都使用struts進行開發(fā),這為后來的SSH框架墊定了穩(wěn)固的江山。
后來,Spring出來了,他宣傳的是依懶注入和控制反轉(zhuǎn),把主要精力放到了如何在模塊之間解耦上去了。很多框架師也確實認同Rod Johnson,紛紛也將Spring引入到了項目中去。而Hibernate在持久化上也確實做到了很成功,因此桃園結(jié)義就此拉開!SSH一個強大的框架,就此誕生!Struts 負責MVC,Spring負責解耦,Hibernate負責數(shù)據(jù)持久化,分工明確!各自在自己的地旁上呼風喚雨!
SSH這個框架,看似很好?但我卻認為很復(fù)雜。為什么一個人能干好的活,非要交給三個人干呢?這里也許是包含各種歷史原因,也許是因為太多的程序員的惰性思維。不管怎么樣,我認為程序員應(yīng)該創(chuàng)新,應(yīng)該與時具進!
直到有一天,我看到了一個很牛逼的網(wǎng)站http://leopard.io/。作者開發(fā)了一個叫作Leopard的框架。這個框架基于Spring開發(fā),在Spring MVC、Spring JDBC上做了深入的封裝,將困擾眾多WEB開發(fā)者的問題,一一化解!
我深入研究了這個框架,并對SSH和Leopard進行了一個深入的對比:
SSH,我就用一句話來描述:使用了各框架之所長!
Leopard,我想深入列舉一下:
WEB MVC功能1、使用Spring MVC框架,在原有功能上封裝了多個數(shù)據(jù)視圖。比如有返回Json數(shù)據(jù)的視圖、返回文本數(shù)據(jù)的視圖、返回分頁數(shù)據(jù)的視圖、返回ftl數(shù)據(jù)的視圖等等。 2、實現(xiàn)自定義關(guān)鍵參數(shù)(參見我的博客http://wsppkdc.VEvb.com/)。 3、對int、boolean、long型對象為空值時進行了轉(zhuǎn)換。 4、實現(xiàn)智能登錄驗證掃描。 5、內(nèi)置自定義攔截器,可實現(xiàn)自定義功能。 6、實現(xiàn)分布式session,開放自如。 7、實現(xiàn)自定義登錄驗證組件,開放驗證接口支持自定義實現(xiàn)登錄驗證及登錄界面。 8、實現(xiàn)防并發(fā)組件,可以在指定時間限制接口訪問次數(shù)。 9、實現(xiàn)驗證碼組件,可支持多組驗證碼分組驗證。 10、實現(xiàn)方法耗時監(jiān)控、數(shù)據(jù)源(MySQL、Redis、Memcached等)請求統(tǒng)計。 11、實現(xiàn)CSRF、XSS安全漏洞防范。
以上web功能,開箱即用。不想用的時候,關(guān)閉即可。
持久化功能1、封裝Spring JDBC實現(xiàn),Hibernate號稱的方便牽移,我想已經(jīng)毫無用武之地了。因為Leopard不僅僅在實現(xiàn)上做了工作,還在設(shè)計上給了建議。建議所有數(shù)據(jù)庫操作均使用單表操作(如果你認為做不到,可以直接找作者幫忙,而且還是免費的,這使我對作者肅然起敬!!!)。 2、封裝了Redis緩存實現(xiàn),Hibernate的緩存,又被打趴了。 3、對JDBC、Redis配置連接池,僅僅一行標簽搞定!
解耦功能1、依然采用Spring的解耦功能。
其他組件1、實現(xiàn)了Jetty熱部署。這個是相當牛擦的,啟動web應(yīng)用。只要運行一個JettyTest類即可。而且支持熱部署,改完代碼不需要重啟。 2、智能配置mvc resources,為了提高靜態(tài)文件的訪問速度。Leopard會自動將靜態(tài)文件轉(zhuǎn)換為Spring 的Resource,請求時不需要再進入Controller。 3、自定義標簽,簡化xml編寫。 4、內(nèi)置Tson數(shù)據(jù)結(jié)構(gòu)簡化Model構(gòu)造,使單元測試編寫變得相當簡單。 5、開放可擴展接口。 6、制定開發(fā)規(guī)范,簡化項目交結(jié)。 7、智能化日志配置。 8、….
太多太多的新玩藝了,還是自己上http://leopard.io/上去看吧。作者已經(jīng)將源碼、示例代碼全部開源出來了。我認為此框架值得學(xué)習,也許它將帶來另一個春天!
新聞熱點
疑難解答