<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)航:
     
    主站蜘蛛池模板: 最近中文字幕无吗高清免费视频| 伊人久久亚洲综合影院| 亚洲日本久久一区二区va| 日韩免费在线观看| 亚洲视频在线免费| 亚洲精品视频在线播放| 日韩免费视频播放| 久久免费视频网站| 亚洲成AV人片在WWW| 国产亚洲精AA在线观看SEE| av大片在线无码免费| 一级毛片一级毛片免费毛片| 亚洲ⅴ国产v天堂a无码二区| 四虎在线视频免费观看| 三年片免费观看大全国语| 久久亚洲最大成人网4438| 中文字幕亚洲图片| 无码一区二区三区免费视频| 在线观看免费视频一区| 亚洲欧美成aⅴ人在线观看| 亚洲精品二区国产综合野狼| 久久WWW免费人成人片| 国产在线观看免费av站| 亚洲欧美成aⅴ人在线观看| 91亚洲精品视频| 亚洲女人被黑人巨大进入| 成人爽A毛片免费看| 国产情侣久久久久aⅴ免费 | 视频一区二区三区免费观看| 久久久亚洲欧洲日产国码是AV| 免费真实播放国产乱子伦| 久草视频在线免费| 在线人成免费视频69国产| 免费无码午夜福利片69| 亚洲欧洲AV无码专区| 亚洲电影在线免费观看| 亚洲精品二区国产综合野狼| 亚洲国产日韩成人综合天堂| 大陆一级毛片免费视频观看| 最近中文字幕免费2019| 国产婷婷成人久久Av免费高清|