国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
簡化Spring(3)--Controller層
Struts與Webwork的扇子請?zhí)^本篇。

    MVC不就是把M、V、C分開么?至唯物樸素的做法是兩個JSP一個負責View,一個負責Controller,再加一個負責Model的Java Bean,已經(jīng)可以工作得很好,那時候一切都很簡單。
    而現(xiàn)在為了一些不是本質(zhì)的功能,冒出這么多非標準的Web框架,實在讓人一陣郁悶。像Ruby On Rails那樣簡捷開發(fā),可用可不用,而且沒有太多的限制需要學習的,比如Webwork這型還可以考慮。但像Struts那樣越用框架越麻煩,或者像Tapestry那樣有嚴重自閉傾向,額上鑿著"高手專用玩具"的,用在團隊里就是不負責任的行為了。

    so,我的MVC方案是使用Spring MVC的Controller接口,寫最普通的JavaBean作為Controller,本質(zhì)就和當年拿JSP作Controller差不多,但擁有了Spring IOC的特性。
    之所以用這么消極的選擇標準,是因為覺得這一代MVC框架離重回RAD時代的標準還很遠,注定了只是一段短暫的,過渡的技術(shù),不值得投資太多精力和團隊學習成本。

1. 原理
     Spring MVC按植物分類學屬于Martin Flower〈企業(yè)應用模式〉里的靜態(tài)配置型Front Controler,使用DispatchServlet截獲所有*.do的請求,按照xml文件的配置,調(diào)用對應的Command對象的handleRequest(request,response)函數(shù),同時進行依賴對象的注入。
     我們的Controller層,就是實現(xiàn)handleRequest(request,response)函數(shù)的普通JavaBean。

2. 優(yōu)勢
    
Spring MVC與struts相比的優(yōu)勢:
     一是它的Controller有著從松到緊的類層次結(jié)構(gòu),用戶可以選擇實現(xiàn)只有一個HandleRequest()函數(shù)的接口,也可以使用它有很多回調(diào)函數(shù)的SimpleFormController類。
     二是不需要Form Bean,也不需要Tapestry那所謂面向?qū)ο蟮捻撁鎸ο螅瑢τ谏钆骂惻蛎?,改一個東西要動N個地方的人最適合不過。
     三是不需要強XML配置文件,宣告式編程是好的,但如果強制成框架,什么都要在xml里面宣告,寫的時候繁瑣,看的時候也要代碼配置兩邊看才能明白就比較麻煩了。
 
     那Webwork呢?沒有實戰(zhàn)過,不過因為對MVC框架所求就不多,單用Spring MVC的Controller已經(jīng)可以滿足需求,就不多搞一套Webwork來給團隊設(shè)坎,還有給日后維護,spring,ww2之間的版本升級添麻煩了。真有什么需要添加的,Spring MVC源代碼量很少,很容易掌控和擴展。
 
3.化簡
3.1. 直接implement Controller,實現(xiàn)handleRequest()函數(shù)
      首先,simple form controller非我所好,一點都不simple。所以有時我會直接implement Controller接口。這個接口的唯一函數(shù)是供Front Controller調(diào)用的handleRequest(request,response)。
      如果需要application對象,比如想用application.getRealPath()時,就要extends webApplicationObjectSupport。

3.2.每個Controler負責一組相關(guān)的action
       我是堅決支持一個Controler負責多個action的,一個Controler一個action就像一個function一個類一樣無聊。所以我用最傳統(tǒng)的方式,用URL參數(shù)如msg="insert"把一組相關(guān)action交給一個Controler控制。ROR與制作中的Groovy On Rails都是這種模式,Spring也有MultiActionController支持。
       以上三者都是把URL參數(shù)直接反射為Controller的函數(shù),而Stripes的設(shè)計可用annotation標注url action到響應函數(shù)的映射。
      
3.3.xml宣告式編程的取舍 
    我的取舍很簡單,反正Spring沒有任何強制,我只在可能需要不重新編譯而改變某些東西的時候,才把東西放在xml里動態(tài)注入。jsp路徑之類的就統(tǒng)統(tǒng)收回到controller里面定義.
 
3.4.Data Binder
       Data Binder是Controller的必有環(huán)節(jié),對于Spring提供的DataBinder,照理完全可用,唯一不爽是對象如果有內(nèi)嵌對象,如訂單對象里面包含了Customer對象,Spring需要你先自行創(chuàng)建了Customer對象并把它賦給了Order對象,才可能實現(xiàn)order.customer.customer_no這樣的綁定。我偷懶,又拿Jakarta BeanUtils出來自己做了一個Binder。

3.5.提取基類
      最后還是忍不住提取了一個基類,負責MultiAction和其他一些簡便的方法。Sprnig的MultiActionController做得太死,規(guī)定所有函數(shù)的第1,2個參數(shù)必須是request和response,不懂動態(tài)的,溫柔的進行參數(shù)注入。

      
      經(jīng)過化簡再化簡,已經(jīng)是很簡單一個Java Bean ,任誰都可以輕松上手,即使某年某月技術(shù)的大潮把現(xiàn)在所有MVC框架都淹沒了,也不至于沒人識得維護。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SPRING MVC
Java程序員應知應會,為什么現(xiàn)在我們不用Servlet了?
解決Spring MVC 對AOP不起作用的問題
圖解Spring MVC
springMVC入門
Spring mvc控制器
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服