<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    飛翔的起點(diǎn)

    從這里出發(fā)

    導(dǎo)航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統(tǒng)計(jì)

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    框架介紹-----(struts)

            框架(Framework)是可重用的,半完成的應(yīng)用程序,可以用來(lái)產(chǎn)生專門的定制程序。
            一般來(lái)說(shuō),程序大致上有兩類性質(zhì)的組件組成,一類與程序要處理的具體事務(wù)密切相關(guān),我們不妨把它們叫做業(yè)務(wù)組件;另一類是應(yīng)用服務(wù),例如是決定程序流向的控制、輸入的校驗(yàn)、錯(cuò)誤處理及標(biāo)簽庫(kù)等這些只與程序相關(guān)的組件在不同的系統(tǒng)中可以很好地得到重用。人們把這些在不同應(yīng)用程序中有共性的一些東西抽取出來(lái),做成一個(gè)半成品程序,這樣的半成品就是所謂的程序框架,再做一個(gè)新的東西時(shí)就不必白手起家,而是可以在這個(gè)基礎(chǔ)上開始搭建。實(shí)際上,有些大型軟件企業(yè)選擇自己搭建這樣的框架。但大多數(shù)中小型軟件企業(yè)或者其他組織,沒有條件自己建立框架。
           最近幾年特別流行的Struts,因?yàn)樗拈_源性,在JSP Web應(yīng)用開發(fā)中應(yīng)用得非常廣泛,那究竟什么是struts了?
            為了能清楚、深刻的理解struts,我們從model1和model2開始談起。
            mode1 1是一個(gè)以JSP文件為中心的模式,在這種模式中JSP頁(yè)面不僅負(fù)責(zé)表現(xiàn)邏輯,也負(fù)責(zé)控制邏輯。專業(yè)書籍上稱之為邏輯耦合在頁(yè)面中,這種處理方式,對(duì)一些規(guī)模很小的項(xiàng)目,可以在一個(gè)頁(yè)面上就可以把握全局,便于理解。但是用Model 1模式開發(fā)大型時(shí),程序流向由一些互相能夠感知的頁(yè)面決定,當(dāng)頁(yè)面很多時(shí)要清楚地把握其流向?qū)⑹呛軓?fù)雜的事情,當(dāng)您修改一頁(yè)時(shí)可能會(huì)影響相關(guān)的很多頁(yè)面,大有牽一發(fā)而動(dòng)全身的感覺,使得程序的修改與維護(hù)變得異常困難;還有一個(gè)問(wèn)題就是程序邏輯開發(fā)與頁(yè)面設(shè)計(jì)糾纏在一起,既不便于分工合作也不利于代碼的重用,這樣的程序其健壯性和可伸縮性都不好。
            為了能夠提高開發(fā)速度和避免model1的缺陷和不足,就引入了model2模式。
            它引入了"控制器"這個(gè)概念,控制器一般由servlet來(lái)?yè)?dān)任,客戶端的請(qǐng)求不再直接送給一個(gè)處理業(yè)務(wù)邏輯的JSP頁(yè)面,而是送給這個(gè)控制器,再由控制器根據(jù)具體的請(qǐng)求調(diào)用不同的事務(wù)邏輯,并將處理結(jié)果返回到合適的頁(yè)面。因此,這個(gè)servlet控制器為應(yīng)用程序提供了一個(gè)進(jìn)行前-后端處理的中樞。一方面為輸入數(shù)據(jù)的驗(yàn)證、身份認(rèn)證、日志及實(shí)現(xiàn)國(guó)際化編程提供了一個(gè)合適的切入點(diǎn);另一方面也提供了將業(yè)務(wù)邏輯從JSP文件剝離的可能。業(yè)務(wù)邏輯從JSP頁(yè)面分離后,JSP文件蛻變成一個(gè)單純完成顯示任務(wù)的東西,這就是常說(shuō)的View.而獨(dú)立出來(lái)的事務(wù)邏輯變成人們常說(shuō)的Model,再加上控制器Control本身,就構(gòu)成了MVC模式。實(shí)踐證明,MVC模式為大型程序的開發(fā)及維護(hù)提供了巨大的便利。
            其實(shí),MVC開始并不是為Web應(yīng)用程序提出的模式,傳統(tǒng)的MVC要求M將其狀態(tài)變化通報(bào)給V,但由于Web瀏覽器工作在典型的拉模式而非推模式,很難做到這一點(diǎn)。因此有些人又將用于Web應(yīng)用的MVC稱之為MVC2.正如上面所提到的MVC是一種模式,當(dāng)然可以有各種不同的具體實(shí)現(xiàn),包括您自己就可以實(shí)現(xiàn)一個(gè)體現(xiàn)MVC思想的程序框架,Struts就是一種具體實(shí)現(xiàn)MVC2的程序框架。
            一個(gè)基于Struts的應(yīng)用程序的結(jié)構(gòu),從左到右,分別是其表示層(view)、控制層(controller)、和模型層(Model)。其表示層使用Struts標(biāo)簽庫(kù)構(gòu)建。來(lái)自客戶的所有需要通過(guò)框架的請(qǐng)求統(tǒng)一由叫ActionServlet的servlet接收(ActionServlet Struts已經(jīng)為我們寫好了,只要您應(yīng)用沒有什么特別的要求,它基本上都能滿足您的要求),根據(jù)接收的請(qǐng)求參數(shù)和Struts配置(struts-config.xml)中ActionMapping,將請(qǐng)求送給合適的Action去處理,解決由誰(shuí)做的問(wèn)題,它們共同構(gòu)成Struts的控制器。Action則是Struts應(yīng)用中真正干活的組件,開發(fā)人員一般都要在這里耗費(fèi)大量的時(shí)間,它解決的是做什么的問(wèn)題,它通過(guò)調(diào)用需要的業(yè)務(wù)組件(模型)來(lái)完成應(yīng)用的業(yè)務(wù),業(yè)務(wù)組件解決的是如何做的問(wèn)題,并將執(zhí)行的結(jié)果返回一個(gè)代表所需的描繪響應(yīng)的JSP(或Action)的ActionForward對(duì)象給ActionServlet以將響應(yīng)呈現(xiàn)給客戶。
             對(duì)于Action類。我認(rèn)為它實(shí)際上可以看作是Controller與Model的適配器,如果硬要把它歸于那一部分,筆者更傾向于后一種看法,即它是Controller的一部分,換句話說(shuō),它不應(yīng)該包含過(guò)多的業(yè)務(wù)邏輯,而應(yīng)該只是簡(jiǎn)單地收集業(yè)務(wù)方法所需要的數(shù)據(jù)并傳遞給業(yè)務(wù)對(duì)象。實(shí)際上,它的主要職責(zé)是:

      校驗(yàn)前提條件或者聲明

      調(diào)用需要的業(yè)務(wù)邏輯方法

      檢測(cè)或處理其他錯(cuò)誤

      路由控制到相關(guān)視圖

           struts框架給我們的開發(fā)帶來(lái)了很多的方便,使得開發(fā)速度有了很大的提高。下面簡(jiǎn)單的介紹一下我們為什么使用struts和使用它的具體好處。
            首先,它是建立在MVC這種公認(rèn)的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一個(gè)好的控制器和一套定制的標(biāo)簽庫(kù)上,也就是說(shuō)它的著力點(diǎn)在C和V上,因此,它天生就有MVC所帶來(lái)的一系列優(yōu)點(diǎn),如:結(jié)構(gòu)層次分明,高可重用性,增加了程序的健壯性和可伸縮性,便于開發(fā)與設(shè)計(jì)分工,提供集中統(tǒng)一的權(quán)限控制、校驗(yàn)、國(guó)際化、日志等等;其次,它是個(gè)開源項(xiàng)目得到了包括它的發(fā)明者Craig R.McClanahan在內(nèi)的一些程序大師和高手持續(xù)而細(xì)心的呵護(hù),并且經(jīng)受了實(shí)戰(zhàn)的檢驗(yàn),使其功能越來(lái)越強(qiáng)大,體系也日臻完善;最后,是它對(duì)其他技術(shù)和框架顯示出很好的融合性。如,現(xiàn)在,它已經(jīng)與tiles融為一體,可以展望,它很快就會(huì)與JSF等融會(huì)在一起。當(dāng)然,和其他任何技術(shù)一樣,它也不是十全十美的,如:它對(duì)類和一些屬性、參數(shù)的命名顯得有些隨意,給使用帶來(lái)一些不便;還有如Action類execute方法的只能接收一個(gè)ActionForm參數(shù)等。但瑕不掩瑜,這些沒有影響它被廣泛使用。

    posted on 2008-03-18 09:54 forgood 閱讀(158) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 女人18毛片水最多免费观看| 中文字幕看片在线a免费| 麻豆视频免费观看| 亚洲黄色在线播放| 最近中文字幕2019高清免费| 亚洲日韩区在线电影| 性色午夜视频免费男人的天堂| 亚洲宅男天堂在线观看无病毒| 高清永久免费观看| 亚洲成a人片在线观看无码| a级毛片免费完整视频| 亚洲精品福利视频| 日韩免费一区二区三区在线播放| 77777亚洲午夜久久多喷| 日本一道本高清免费| 猫咪免费观看人成网站在线| 久久久久亚洲?V成人无码| 很黄很污的网站免费| 亚洲无砖砖区免费| 国产裸模视频免费区无码| 精品多毛少妇人妻AV免费久久| 亚洲国产一区二区三区青草影视| 国产在线a免费观看| 国产精品亚洲一区二区三区| 亚洲综合无码AV一区二区| 久久九九AV免费精品| 色噜噜亚洲男人的天堂| 在线a亚洲v天堂网2018| 暖暖免费日本在线中文| 亚洲三级高清免费| 亚洲综合久久夜AV | 18禁美女裸体免费网站| 亚洲av成人无码网站…| 国产亚洲一区二区三区在线观看 | 亚洲AV色欲色欲WWW| 中文字幕在线亚洲精品| 美女被免费喷白浆视频| 国产伦精品一区二区免费| 亚洲制服在线观看| 国产亚洲欧洲Aⅴ综合一区| 美女视频黄的全免费视频网站|