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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

     

    將此文章收藏到豌豆網

    2.4. 代碼剖析

    下面就讓我們開始進一步分析JpetStore4.0的源代碼,為下面的改造鋪路。BeanAction.java是唯一一個Struts action類,位于com.ibatis.struts包下。正如上文所言,它是一個通用的控制類,利用反射機制,把控制轉移到form bean的某個方法來處理。詳細處理過程參考其源代碼,簡單明晰。

    Form bean類位于com.ibatis.jpetstore.presentation包下,命名規則為***Bean。Form bean類全部繼承于BaseBean類,而BaseBean類實際繼承于ActionForm,因此,Form bean類就是Struts的 ActionForm,Form bean類的屬性數據就由struts框架自動填充。而實際上,JpetStore4.0擴展了struts中ActionForm的應用: Form bean類還具有行為,更像一個BO,其行為(方法)由BeanAction根據配置(struts-config.xml)的URL來調用。雖然如此,我們還是把Form bean類定位于表現層。Struts-config.xml的配置里有3種映射方式,來告訴BeanAction把控制轉到哪個form bean對象的哪個方法來處理。以這個請求連接為例http://localhost/jpetstore4/shop/viewOrder.do

    1. URL Pattern

    <action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction"
                            name="orderBean" scope="session"
                            validate="false">
                            <forward name="success" path="/order/ViewOrder.jsp"/>
                            </action>


    此種方式表示,控制將被轉發到"orderBean"這個form bean對象 的"viewOrder"方法(行為)來處理。方法名取"path"參數的以"/"分隔的最后一部分。

    2. Method Parameter

    <action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction"
                            name="orderBean" parameter="viewOrder" scope="session"
                            validate="false">
                            <forward name="success" path="/order/ViewOrder.jsp"/>
                            </action>


    此種方式表示,控制將被轉發到"orderBean"這個form bean對象的"viewOrder"方法(行為)來處理。配置中的"parameter"參數表示form bean類上的方法。"parameter"參數優先于"path"參數。

    3. No Method call

    <action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction"
                            name="orderBean" parameter="*" scope="session"
                            validate="false">
                            <forward name="success" path="/order/ViewOrder.jsp"/>
                            </action>


    此種方式表示,form bean上沒有任何方法被調用。如果存在"name"屬性,則struts把表單參數等數據填充到form bean對象后,把控制轉發到"success"。否則,如果name為空,則直接轉發控制到"success"。這就相當于struts內置的org.apache.struts.actions.ForwardAction的功能

    <action path="/shop/viewOrder" type="org.apache.struts.actions.ForwardAction"
                            parameter="/order/ViewOrder.jsp " scope="session" validate="false">
                            </action>


    Service類位于com.ibatis.jpetstore.service包下,屬于業務層。這些類封裝了業務以及相應的事務控制。Service類由form bean類來調用。

    com.ibatis.jpetstore.persistence.iface包下的類是DAO接口,屬于業務層,其屏蔽了底層的數據庫操作,供具體的Service類來調用。DaoConfig類是工具類(DAO工廠類),Service類通過DaoConfig類來獲得相應的DAO接口,而不用關心底層的具體數據庫操作,實現了如圖2中{耦合2}的解耦。

    com.ibatis.jpetstore.persistence.sqlmapdao包下的類是對應DAO接口的具體實現,在JpetStore4.0中采用了ibatis來實現ORM。這些實現類繼承BaseSqlMapDao類,而BaseSqlMapDao類則繼承ibatis DAO 框架中的SqlMapDaoTemplate類。ibatis的配置文件存放在com.ibatis.jpetstore.persistence.sqlmapdao.sql目錄下。這些類和配置文件位于數據層

    Domain類位于com.ibatis.jpetstore.domain包下,是普通的javabean。在這里用作數據傳輸對象(DTO),貫穿視圖層、業務層和數據層,用于在不同層之間傳輸數據。剩下的部分就比較簡單了,請看具體的源代碼,非常清晰。
    posted on 2007-12-05 16:04 禮物 閱讀(888) 評論(2)  編輯  收藏 所屬分類: ibatis + spring

    評論

    # re: 基于struts+spring+ibatis的 J2EE 開發(2)[未登錄] 2007-12-18 14:30 毛毛
    看不懂,專業了吧~  回復  更多評論
      

    # re: 基于struts+spring+ibatis的 J2EE 開發(2)[未登錄] 2011-10-17 23:14
    @毛毛
    看得懂- -!  回復  更多評論
      

    主站蜘蛛池模板: 韩国免费a级作爱片无码| 亚洲av无码成人影院一区| 中国国产高清免费av片| 亚洲精品国产精品乱码不卞| 色偷偷噜噜噜亚洲男人| 国产成人免费a在线资源| 久久精品国产亚洲AV| 四虎影视免费在线| 精品久久亚洲一级α| 亚洲国产成人精品91久久久| 一本久久免费视频| 久久精品国产亚洲麻豆| 一区二区三区观看免费中文视频在线播放| 亚洲动漫精品无码av天堂| 久久大香伊焦在人线免费| 亚洲激情视频网站| 日本高清免费网站| 人妻巨大乳hd免费看| 久久精品国产亚洲综合色| xxxx日本免费| 亚洲AV无码成人精品区狼人影院 | 国产免费av一区二区三区| 猫咪www免费人成网站| 亚洲精品少妇30p| 亚洲免费在线视频观看| 亚洲码和欧洲码一码二码三码| 亚洲国产精品一区二区第四页| 成人黄网站片免费视频| 亚洲午夜精品在线| 免费国产成人午夜私人影视| 野花香高清视频在线观看免费| 亚洲欧洲精品一区二区三区| 国产伦一区二区三区免费| 麻豆精品不卡国产免费看| 亚洲三级在线播放| ZZIJZZIJ亚洲日本少妇JIZJIZ| 性无码免费一区二区三区在线| 亚洲日本在线电影| 久久亚洲国产精品一区二区| 免费电影在线观看网站| 一级毛片在线免费视频|