記得不少不少年前,在Java Web開發的世界裏,SSH(Struts、Spring、Hibernate、)這個框架是很火的?火到什麼程度呢?在當時你若是說不懂SSH,你都很差意思說你是搞Java Web發的。如今回想起來,這個框架實在是太過扯蛋!並且扯得蛋很疼!致使至今仍有不少不少Java Web開發者前撲後繼的去學習這個架構!程序員
我是一個寫了不少年程序的老程序員,我對這個現象感到很痛心!僅僅是由於咱們的程序員同窗都太過依賴舊的技術,不肯與時俱進!web
下面咱們來分析SSH爲何會這麼流行?又怎麼樣來改變這個現狀?數據庫
Struts是MVC模式web框架公認的標準,在Spring尚未出來的時候。Struts已經很流行了,大大小小的web項目都使用struts進行開發,這爲後來的SSH框架墊定了穩固的江山。緩存
後來,Spring出來了,他宣傳的是依懶注入和控制反轉,把主要精力放到了如何在模塊之間解耦上去了。不少框架師也確實認同Rod Johnson,紛紛也將Spring引入到了項目中去。而Hibernate在持久化上也確實作到了很成功,所以桃園結義就此拉開!SSH一個強大的框架,就此誕生!Struts 負責MVC,Spring負責解耦,Hibernate負責數據持久化,分工明確!各自在本身的地旁上呼風喚雨!安全
SSH這個框架,看似很好?但我卻認爲很複雜。爲何一我的能幹好的活,非要交給三我的幹呢?這裏也許是包含各類歷史緣由,也許是由於太多的程序員的惰性思惟。無論怎麼樣,我認爲程序員應該創新,應該與時具進!session
直到有一天,我看到了一個很牛逼的網站http://leopard.io/。做者開發了一個叫做Leopard的框架。這個框架基於Spring開發,在Spring MVC、Spring JDBC上作了深刻的封裝,將困擾衆多WEB開發者的問題,一一化解!數據結構
我深刻研究了這個框架,並對SSH和Leopard進行了一個深刻的對比:架構
SSH,我就用一句話來描述:使用了各框架之所長!併發
Leopard,我想深刻列舉一下:mvc
一、使用Spring MVC框架,在原有功能上封裝了多個數據視圖。好比有返回Json數據的視圖、返回文本數據的視圖、返回分頁數據的視圖、返回ftl數據的視圖等等。
二、實現自定義關鍵參數(參見個人博客http://wsppkdc.iteye.com/)。
三、對int、boolean、long型對象爲空值時進行了轉換。
四、實現智能登陸驗證掃描。
五、內置自定義攔截器,可實現自定義功能。
六、實現分佈式session,開放自如。
七、實現自定義登陸驗證組件,開放驗證接口支持自定義實現登陸驗證及登陸界面。
八、實現防併發組件,能夠在指定時間限制接口訪問次數。
九、實現驗證碼組件,可支持多組驗證碼分組驗證。
十、實現方法耗時監控、數據源(MySQL、Redis、Memcached等)請求統計。
十一、實現CSRF、XSS安全漏洞防範。
以上web功能,開箱即用。不想用的時候,關閉便可。
一、封裝Spring JDBC實現,Hibernate號稱的方便牽移,我想已經毫無用武之地了。由於Leopard不只僅在實現上作了工做,還在設計上給了建議。建議全部數據庫操做均使用單表操做(若是你認爲作不到,能夠直接找做者幫忙,並且仍是免費的,這使我對做者肅然起敬!!!)。
二、封裝了Redis緩存實現,Hibernate的緩存,又被打趴了。
三、對JDBC、Redis配置鏈接池,僅僅一行標籤搞定!
一、依然採用Spring的解耦功能。
一、實現了Jetty熱部署。這個是至關牛擦的,啓動web應用。只要運行一個JettyTest類便可。並且支持熱部署,改完代碼不須要重啓。
二、智能配置mvc resources,爲了提升靜態文件的訪問速度。Leopard會自動將靜態文件轉換爲Spring 的Resource,請求時不須要再進入Controller。
三、自定義標籤,簡化XML編寫。
四、內置Tson數據結構簡化Model構造,使單元測試編寫變得至關簡單。
五、開放可擴展接口。
六、制定開發規範,簡化項目交結。
七、智能化日誌配置。
八、….
太多太多的新玩藝了,仍是本身上http://leopard.io/上去看吧。做者已經將源碼、示例代碼所有開源出來了。我認爲此框架值得學習,也許它將帶來另外一個春天!