<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
    1. 前言

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

    Spring Framework 實際上是Expert One-on-One J2EE Design and Development 一書中所闡述的設計思想的具體實現。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,它能將接口與實現分開,非常強大。目前AOP應用最成熟的還是在事務管理上。

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

    2. JpetStore簡述

    2.1. 背景

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

    2.2. JpetStore開發運行環境的建立

    1、開發環境

    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中開發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的具體實現圖(圖2),思路一下子就豁然開朗了。前言中提到的非傳統的struts開發模式,關鍵就在struts Action類和form bean類上。

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

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

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


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



    圖2 JpetStore 4.0具體實現
    posted on 2007-12-05 16:02 禮物 閱讀(589) 評論(0)  編輯  收藏 所屬分類: ibatis + spring
    主站蜘蛛池模板: 久久精品夜色噜噜亚洲A∨| 国产色在线|亚洲| 亚洲精品中文字幕无码AV| 亚洲另类精品xxxx人妖| 亚洲gay片在线gv网站| GOGOGO免费观看国语| 黄页网站在线观看免费高清| 日韩在线看片免费人成视频播放| 相泽亚洲一区中文字幕| 亚洲综合校园春色| 最近免费字幕中文大全| 最新中文字幕免费视频| 亚洲va久久久噜噜噜久久男同| 亚洲国产AV无码一区二区三区| 在线观看人成视频免费无遮挡| 成人免费午夜视频| 亚洲人成依人成综合网| 国产区在线免费观看| 国产美女精品视频免费观看 | 亚洲成年轻人电影网站www | 黄在线观看www免费看| 亚洲AV无码一区二区二三区软件| 亚洲人成色777777精品| 久久久久国产精品免费看| 国产偷国产偷亚洲清高动态图| 大桥未久亚洲无av码在线| 免费黄色大片网站| 精品久久久久久久久亚洲偷窥女厕| 国产精品久久久久久久久久免费| 亚洲黄色网址在线观看| 18女人毛片水真多免费| 亚洲综合激情另类小说区| 在线看无码的免费网站| 亚洲中文无码av永久| 无码国产精品久久一区免费| 亚洲专区一路线二| 日韩a级毛片免费观看| 四虎影视久久久免费| 亚洲国产成人片在线观看无码 | 亚洲精品无码成人| 亚洲国产精品自产在线播放|