欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
簡(jiǎn)化Spring(3)--Controller層
Struts與Webwork的扇子請跳過(guò)本篇。

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

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

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

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

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

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

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

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久