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

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

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

    Terry.Li-彬

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

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    1. 前言

    Struts 是目前Java Web MVC框架中不爭的王者。經過長達五年的發(fā)展,Struts已經逐漸成長為一個穩(wěn)定、成熟的框架,并且占有了MVC框架中最大的市場份額。但是Struts某些技術特性上已經落后于新興的MVC框架。面對Spring MVC、Webwork2 這些設計更精密,擴展性更強的框架,Struts受到了前所未有的挑戰(zhàn)。但站在產品開發(fā)的角度而言,Struts仍然是最穩(wěn)妥的選擇。本文的原型例子JpetStore 4.0就是基于Struts開發(fā)的,但是不拘泥于Struts的傳統(tǒng)固定用法,例如只用了一個自定義Action類,并且在form bean類的定義上也是開創(chuàng)性的,令人耳目一新,稍后將具體剖析一下。

    Spring Framework 實際上是Expert One-on-One J2EE Design and Development 一書中所闡述的設計思想的具體實現(xiàn)。Spring Framework的功能非常多。包含AOP、ORM、DAO、Context、Web、MVC等幾個部分組成。Web、MVC暫不用考慮,JpetStore 4.0用的是更成熟的Struts和JSP;DAO由于目前Hibernate、JDO、ibatis的流行,也不考慮,JpetStore 4.0用的就是ibatis。因此最需要用的是AOP、ORM、Context。Context中,最重要的是Beanfactory,它能將接口與實現(xiàn)分開,非常強大。目前AOP應用最成熟的還是在事務管理上。

    ibatis 是一個功能強大實用的SQL Map工具,不同于其他ORM工具(如hibernate),它是將SQL語句映射成Java對象,而對于ORM工具,它的SQL語句是根據(jù)映射定義生成的。ibatis 以SQL開發(fā)的工作量和數(shù)據(jù)庫移植性上的讓步,為系統(tǒng)設計提供了更大的自由空間。有ibatis代碼生成的工具,可以根據(jù)DDL自動生成ibatis代碼,能減少很多工作量。

    2. JpetStore簡述

    2.1. 背景

    最初是Sun公司的J2EE petstore,其最主要目的是用于學習J2EE,但是其缺點也很明顯,就是過度設計了。接著Oracle用J2EE petstore來比較各應用服務器的性能。微軟推出了基于.Net平臺的 Pet shop,用于競爭J2EE petstore。而JpetStore則是經過改良的基于struts的輕便框架J2EE web應用程序,相比來說,JpetStore設計和架構更優(yōu)良,各層定義清晰,使用了很多最佳實踐和模式,避免了很多"反模式",如使用存儲過程,在java代碼中嵌入SQL語句,把HTML存儲在數(shù)據(jù)庫中等等。最新版本是JpetStore 4.0。

    2.2. JpetStore開發(fā)運行環(huán)境的建立

    1、開發(fā)環(huán)境

    Java SDK 1.4.2
    Apache Tomcat 4.1.31
    Eclipse-SDK-3.0.1-win32
    HSQLDB 1.7.2

    2、Eclipse插件

    EMF SDK 2.0.1:Eclipse建模框架,lomboz插件需要,可以使用runtime版本。
    lomboz 3.0:J2EE插件,用來在Eclipse中開發(fā)J2EE應用程序
    Spring IDE 1.0.3:Spring Bean配置管理插件
    xmlbuddy_2.0.10:編輯XML,用免費版功能即可
    tomcatPluginV3:tomcat管理插件
    Properties Editor:編輯java的屬性文件,并可以預覽以及自動存盤為Unicode格式。免去了手工或者ANT調用native2ascii的麻煩。
    2.3. 架構



    圖1 JpetStore架構圖


    圖1 是JPetStore架構圖。參照這個架構圖,讓我們稍微剖析一下源代碼,得出JpetStore 4.0的具體實現(xiàn)圖(圖2),思路一下子就豁然開朗了。前言中提到的非傳統(tǒng)的struts開發(fā)模式,關鍵就在struts Action類和form bean類上。

    struts Action類只有一個:BeanAction。沒錯,確實是一個!與傳統(tǒng)的struts編程方式很不同。再仔細研究BeanAction類,發(fā)現(xiàn)它其實是一個通用類,利用反射原理,根據(jù)URL來決定調用formbean的哪個方法。BeanAction大大簡化了struts的編程模式,降低了對struts的依賴(與struts以及WEB容器有關的幾個類都放在com.ibatis.struts包下,其它的類都可以直接復用)。利用這種模式,我們會很容易的把它移植到新的框架如JSF,spring。

    這樣重心就轉移到form bean上了,它已經不是普通意義上的form bean了。查看源代碼,可以看到它不僅僅有數(shù)據(jù)和校驗/重置方法,而且已經具有了行為,從這個意義上來說,它更像一個BO(Business Object)。這就是前文講到的,BeanAction類利用反射原理,根據(jù)URL來決定調用form bean的哪個方法(行為)。form bean的這些方法的簽名很簡單,例如:

    public String myActionMethod()
                {
                //..work
                return "success";
                }


    方法的返回值直接就是字符串,對應的是forward的名稱,而不再是ActionForward對象,創(chuàng)建ActionForward對象的任務已經由BeanAction類代勞了。另外,程序還提供了ActionContext工具類,該工具類封裝了request 、response、form parameters、request attributes、session attributes和 application attributes中的數(shù)據(jù)存取操作,簡單而線程安全,form bean類使用該工具類可以進一步從表現(xiàn)層框架解耦。在這里需要特別指出的是,BeanAction類是對struts擴展的一個有益嘗試,雖然提供了非常好的應用開發(fā)模式,但是它還非常新,一直在發(fā)展中。



    圖2 JpetStore 4.0具體實現(xiàn)
    posted on 2007-12-05 16:02 禮物 閱讀(594) 評論(0)  編輯  收藏 所屬分類: ibatis + spring
    主站蜘蛛池模板: 一级毛片不卡片免费观看| 中文毛片无遮挡高潮免费| 久久精品亚洲综合专区| 久久久久久精品成人免费图片| 亚洲精品V天堂中文字幕| 亚洲高清无码专区视频| a级成人毛片免费图片| 91亚洲精品麻豆| 又爽又高潮的BB视频免费看| a毛片免费播放全部完整| 亚洲影视一区二区| 亚洲国产精品一区二区九九 | 中文在线免费观看| 亚洲Av高清一区二区三区| 亚洲国产成人久久一区久久| 95老司机免费福利| 美女视频黄频a免费观看| 91亚洲精品第一综合不卡播放| 日韩免费福利视频| 一级毛片免费观看不卡视频| 极品色天使在线婷婷天堂亚洲 | 亚洲色偷偷偷综合网| 亚洲AV无码久久| 四虎影院永久免费观看| 95老司机免费福利| 久久er国产精品免费观看8| 亚洲人成网国产最新在线| 亚洲成AV人片在WWW色猫咪| 免费被黄网站在观看| 99久久99久久精品免费观看 | 亚洲国产综合AV在线观看| 亚洲人成电影亚洲人成9999网 | 亚洲黄色在线视频| 亚洲精品国产综合久久一线| aa级一级天堂片免费观看| A片在线免费观看| 一级看片免费视频囗交| 亚洲丁香婷婷综合久久| 亚洲综合伊人制服丝袜美腿| 无码久久精品国产亚洲Av影片| 亚洲一本大道无码av天堂|