<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人片在线观看| 高清国语自产拍免费视频国产 | 久久精品国产精品亚洲人人| 久久久久久免费一区二区三区| 亚洲一区精彩视频| 亚洲色中文字幕无码AV| 免费看美女裸露无档网站| 亚洲第一视频在线观看免费| 亚洲乱码中文字幕小综合| 国产偷国产偷亚洲清高动态图 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲A∨无码一区二区三区| 日本无吗免费一二区| 四虎影视无码永久免费| 亚洲AV无码成人精品区日韩 | 丁香婷婷亚洲六月综合色| 久久夜色精品国产亚洲av| 最近中文字幕mv手机免费高清| 最近更新免费中文字幕大全| 亚洲精品美女久久7777777| 亚洲国产一区二区三区青草影视 | 久久久久亚洲AV成人网人人网站 | 久草在视频免费福利| 在线免费播放一级毛片| 免费福利资源站在线视频| 亚洲jizzjizz在线播放久| 久久亚洲精精品中文字幕| 亚洲人色婷婷成人网站在线观看| 日韩一品在线播放视频一品免费| 16女性下面扒开无遮挡免费| 全黄大全大色全免费大片| 深夜久久AAAAA级毛片免费看| 亚洲乱妇老熟女爽到高潮的片 | 亚洲国产系列一区二区三区| 亚洲综合区图片小说区| 亚洲AV日韩AV高潮无码专区|