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

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

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

    美麗涵涵童裝店--說我博客名字,給你們打折!
    隨筆 - 82  文章 - 266  trackbacks - 0
    <2009年6月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011


    點擊這里給楊愛友發(fā)消息
    美麗涵涵童裝店
    說我博客名字,給你們打折!

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章檔案

    好友的BLOG

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     

    1.       struts原理

    Struts中的控制層功能:

    1、 接受客戶端請求

    2、 調(diào)用M層模型組件執(zhí)行相應(yīng)的業(yè)務(wù)邏輯。

    3、 獲取M層業(yè)務(wù)邏輯的處理結(jié)果

    4、 根據(jù)處理結(jié)果選擇合適的視圖呈現(xiàn)給客戶端。

    Contrler層核心控制組件是:ActionServlet,繼承javax.Servlet.Http.HttpServlet,并實現(xiàn)了init(),doGet()、doPost()、destroy()等Servlet生命周期所用到的方法。還添加了一個process(),它本身不復(fù)雜,但它會調(diào)用其他的復(fù)雜方法。

        該框架以 ActionServlet作為核心控制器,整個應(yīng)用由客戶端請求驅(qū)動。當客戶端向Web應(yīng)用發(fā)送請求時,請求將被Struts 1的核心控制器 ActionServlet 攔截,ActionServlet根據(jù)請求決定是否需要調(diào)用業(yè)務(wù)邏輯控制器處理用戶請求,若需要,ActionServlet將該請求發(fā)送給對應(yīng)的業(yè)務(wù)邏輯控制器,業(yè)務(wù)邏輯控制器調(diào)用模型來處理用戶請求,當處理完成后,其處理結(jié)果通過jsp呈現(xiàn)給用戶。

    ActionServlet接收到來自Servlet容器的客戶請求時,具體處理步驟:

    1、根據(jù)瀏覽器是post還是get請求調(diào)用doPost()、doGet()方法,在其中調(diào)用ActionServlet的process()方法。

    2、Process()獲取RequestProcessor對象,調(diào)用RequestProcessor對象的process()方法

    3、Process()讀取struts-config.xml,在其中查找<action>子元素,查找的條件是:用戶請求的URI與action元素的path屬性值一樣,找到后確定name屬性,根據(jù)name找到<form-bean>元素,再根據(jù)action元素的name匹配值找到相應(yīng)的ActionForm bean。

    4、 調(diào)用ActionForm bean的setter方法填充FormBean的屬性,然后調(diào)用FormBean的validate()方法,對表單數(shù)據(jù)的有效性進行驗證。

    5、 RequestProcessor的process()方法根據(jù)3中找到的<action>中的type屬性尋找Action bean對象(有則使用,無則創(chuàng)建),然后將FormBean對象,封裝的請求對象等信息發(fā)給找到的Action對象,Action bean調(diào)用自己的execute()方法處理。

    6、Action bean的execute()方法執(zhí)行完璧后,返回一個ActionForward對象,又回到RequestProcessor對象的process()方法,process方法將根據(jù)ActionForward請求重新定向到指定的頁面。

    2.       Struts1的不足

    (1)支持的表現(xiàn)技術(shù)單一。只支持jsp。

    (2)與Servlet API 嚴重耦合,難于測試。在Struts1的邏輯控制器內(nèi)充滿了大量的servlet API,尤其是HttpServletRequest 和 HttpServletResponse 這兩個參數(shù),需要通過web容器來實例化,非常難于測試。

    (3)代碼嚴重依賴Servlet API,屬于代碼入侵式設(shè)計。在處理方法中,包含大量的Struts 1 API,如: ActionMapping、ActionForm、ActionForward等,一旦系統(tǒng)重構(gòu),離開struts1時,這些代碼將毫無用處。

    3.       webwork簡介

    它主要包括兩部:核心控制器ServletDispatcher,由框架提供;業(yè)務(wù)邏輯控制器,由程序員控制。與struts1相比,他完全從于servlet分離,更容易測試。處理流程:當用戶向web應(yīng)用發(fā)送一個請求時,該請求經(jīng)過webwork過濾器過濾,由核心控制器攔截,若請求需要webwork的業(yè)務(wù)邏輯控制器處理,該控制器則調(diào)用Action映射器,該映射器將用戶請求轉(zhuǎn)發(fā)到對應(yīng)的業(yè)務(wù)邏輯控制器。主要,這里的業(yè)務(wù)邏輯控制器并不是開發(fā)者實現(xiàn)的控制器,而是webwork創(chuàng)建的控制器代理。

    在創(chuàng)建控制器代理時,webwork需要得到開發(fā)者定義的xwork.xml配置文件,控制器代理以用戶實現(xiàn)的控制器為目標,以攔截器鏈中的攔截器作為處理。

    當開發(fā)者自己的控制器處理完請求后,返回的只是普通的字符串,該字符串對應(yīng)到指定的視圖資源。指定的視圖資源經(jīng)過攔截器鏈的處理后,生成對客戶端的相應(yīng)輸出。

    它的優(yōu)勢:

    1)      Action沒有與Servlet API 耦合,易于測試;

    2)      )Action無需與WebWork耦合,代碼重用率高;

    3)      支持更多的表現(xiàn)層技術(shù),有更好的適應(yīng)性。

    4.struts2簡介

    從總體上講,struts2是以webwork思想為核心,同樣適用攔截器做為處理,以用戶的業(yè)務(wù)邏輯控制器做為目標,創(chuàng)建一個控制器代理。控制器代理負責處理用戶請求,處理請求時調(diào)用業(yè)務(wù)邏輯控制器的execute方法。具體處理流程如下:

    (1)瀏覽器發(fā)送請求。

    (2)核心控制器FilterDispatcher根據(jù)請求決定調(diào)用合適的Action。

    (3)webwork的攔截器鏈自動對請求應(yīng)用通用功能。

    (4)回調(diào)業(yè)務(wù)邏輯控制器Action的execute方法,該方法先獲取用戶請求參數(shù),然后調(diào)用模型層進行數(shù)據(jù)處理。

    (5)處理完后返回瀏覽器。

    5.struts1和strut2對比

    (1)在實現(xiàn)類方面的對比:struts1繼承action累,struts2可以實現(xiàn)一個接口。

    (2)線程模式方面對比:struts1是單例模式,要特別注意線程安全;struts2每一個請求都產(chǎn)生一個實例,不存在線程安全問題。

    (3)servlet依賴程度對比:struts1的Action依賴于servlet API,struts2與servlet完全分離,更易測試。

    (4)封裝請求參數(shù)的對比:struts1必須使用一個actionForm來封裝請求參數(shù);struts2直接使用Action屬性來封裝用戶請求參數(shù)。

    6.開發(fā)流程:

    1.       創(chuàng)建web應(yīng)用。

    2.       增加struts2功能。

    1) 在web.xml中配置struts2核心Filter;

    2) 將相關(guān)jar包復(fù)制到web-info/lib下;

    3) 在web.xml/classes下增加struts.xml配置文件。

    3.       實現(xiàn)控制器類。

    控制器類是一個包含execute方法的pojo類,其屬性與jsp表單屬性對應(yīng)。

    struts2的攔截機制負責解析用戶請求中的參數(shù),并將這些參數(shù)賦值給Action的屬性。

    4.       配置Action。

    將業(yè)務(wù)邏輯控制器Action配置到struts.xml中,該配置文件還定義了處理

    結(jié)果與視圖資源的映射關(guān)系。

    5.       增加視圖資源,如error.jsp、welcome.jsp等。

    posted on 2009-06-09 17:15 楊愛友 閱讀(325) 評論(0)  編輯  收藏 所屬分類: java相關(guān)技術(shù)
    美麗涵涵童裝店
    親,說我博客名字,給你們打折!
    主站蜘蛛池模板: 亚洲乱亚洲乱妇无码| 成人av片无码免费天天看| 精品在线观看免费| 蜜桃视频在线观看免费网址入口| 亚洲成A人片在线观看中文| 亚洲欧美日韩中文无线码| 毛色毛片免费观看| 亚洲欧洲国产综合AV无码久久| 久久久久久精品成人免费图片| 亚洲伊人久久成综合人影院| 亚洲国产最大av| 亚洲一级毛片免费在线观看| 亚洲电影在线播放| 久草视频在线免费| 色噜噜亚洲男人的天堂| 在线免费观看中文字幕| 亚洲色图.com| 亚洲成人在线免费观看| 日韩亚洲欧洲在线com91tv| 亚洲精品GV天堂无码男同| 永久看日本大片免费35分钟| 亚洲国产成人精品青青草原| 成人a免费α片在线视频网站| 亚洲av无码一区二区三区四区 | 三年片在线观看免费观看大全一| 在线播放高清国语自产拍免费| 亚洲av日韩专区在线观看| 亚洲精品国产精品乱码不卞| 久久亚洲精品成人无码| 亚洲国产午夜中文字幕精品黄网站| 在线涩涩免费观看国产精品| 亚洲精品无码Av人在线观看国产| 日韩在线视频播放免费视频完整版| 国产亚洲精品无码成人| 精品福利一区二区三区免费视频| 亚洲欧美日韩国产成人| 亚洲AV无码专区在线播放中文| 91视频免费观看高清观看完整| 77777亚洲午夜久久多人| 最近免费中文字幕高清大全 | 亚洲免费一区二区|