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

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

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

    The Spark of Thinking

    Focus on Eclipse Tools.

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      3 隨筆 :: 27 文章 :: 4 評論 :: 0 Trackbacks

    看看別人的總結:前4個缺點是致命的,

    Action

    Struts 里面,每一個 Action 類必需要繼承一個抽象的類 org.apache.struts.action.Action 。這個在 Java 編程中會引來一些問題,就是關于多種繼承的問題。

    WebWork Action 類僅需要實現接口 com.opensymphony.xwork.Action ,也可以實現其它的接口來實現更多的功能,譬如: validate (驗證), localware( 國際化 ) 等。當然,它也提供了一個類 ActionSupport 集成了上面的所有功能,我們在開發中可以根據需要選擇。

    線程模型

    Struts Action 必需是 thread safe 方式,它僅僅允許一個實例去處理所有的請求。所以 action 用到的所有的資源都必需統一同步,這個就引起了線程安全的問題。

    WebWork 中,每個請求對應一個 Action ,因此沒有線程的安全問題。實際上 Servlet 容器對每個請求也產生多個對象,它也沒有證明對性能和垃圾回收產生太多的影響。

    Servlet 的依賴

    Struts 處理 Action 時必需要依賴 ServletRequest ServletResponse ,所有它擺脫不了 Servlet 容器。

    WebWork Action 不用依賴 Web 層和其它的容器。它可以通過 ActionContext ,直接去訪問 Request Response ,但這個是可選的,只有在必需的請求下使用。

    測試

    Struts 的每個 Action 都同 Web 層耦合在一起,這樣它的測試依賴于 Web 容器,單元測試也很難實現。不過有一個 Junit 的擴展工具 Struts TestCase 可以實現它的單元測試。

    Webwork action 能夠通過賦予一定的屬性,就可以執行單元測試。同時也可以使用一個 mock 的實例去測試,而不是通過啟動 web 容器來進行測試。

    FormBean

    Struts 要求有 FormBean 對應每一個表單,而且 FormBean 必需繼承抽象類 ActionForm 。而使用 DynaBeans 實際上沒有太大的意義。不能夠很好的處理現有的模型。

    Webwork 能夠動態的收集 web 的數據然后再賦值給 bean 。它也可以使用 FormBean 的形式, FormBean 可以是普通的 DTO 和域對象,它不用重新根據域對象來生成新的 FormBean ,也不需繼承抽象類 ActionForm

    前端表達式語言

    Struts 集成了 JSTL ,所以它主要使用 JSTL 的表達式語言來獲取數據。可是 JSTL 的表達式語言在 Collection 和索引屬性方面處理顯得很弱。

    WebWork 的表達式語言使用了功能強大的 OGNL 。它使用 OGNL 建立一個 OgnlValueStack 來搜索數據。 Webwork 前端也可以使用 JSTL ,但它同時支持: velocity freemaker jspparer xml

    類型的轉換

    Struts FormBean 把所有的數據都作為 String 類型,它可以使用工具 Commons-Beanutils 進行類型轉化。但它的轉化都是在 Class 級別,而且轉化的類型是不可配置的。類型轉化時的錯誤信息返回給用戶也是非常困難的。

    WebWork 使用 OGNL 進行類型轉化,提供了所有基本類型的轉化功能。類型轉化可以直接對一個 Class 進行( Class 級別)轉化,也可以對 Class 的字段進行類型轉化。它使用攔截器可以很容易的將類型轉化的錯誤信息返回給用戶,而且錯誤信息可以對應到一個相應的字段。

    Action 執行前和后的處理

    Struts 處理 Action 的時候是基于 class hierarchies ,很難在 action 處理前和后進行操作。

    Webwork2 允許您處理 Action 可以通過攔截器,就是在每一個 Action 處理前或者后進行其它操作。它的攔截器可以在配置文件中動態添加,這樣 Action 和攔截器之間完全解藕,更好的實現了組件化。

    驗證處理

    Struts 的驗證是調用 FormBean validator() 方法,其實就是對 FormBean 的驗證。它一般使用框架 Commons Validation 進行數據驗證處理。它使用了一個全局的配置文件 validation.xml 定義了 FormBean 的驗證信息。 Struts FormBean 屬性都被認為是 String 類型,所以它在驗證時也需要額外的類型轉化。

    WebWork 使用 Xwork 的驗證框架進行驗證處理,它可以通過配置攔截器來激活。它可以為每個需要驗證的 Class 指定一個 xml 驗證文件,也可以為一個 Class 在不同的情況指定不同的 xml 驗證文件。 WebWork 證可以給每個 Action 類指定對應的驗證文件,也可以給 Action 的字段去指定驗證文件。通過攔截器來組裝 Action 和其驗證文件,使它們之間完全解藕。

    Action 執行的控制

    Struts 創建一個 Action ,如果想控制它的執行順序將會非常困難。甚至你要重新去寫 Servlet 來實現你的這個功能需求。

    在這個方面, WebWork 的攔截器棧提供了強大的功能。 Action 的所有切面功能都有攔截器來實現(比如:取得 request 請求參數、驗證處理等),這樣你就可以用攔截器棧來組織攔截器的執行順序。例如:你需要在使用 request 請求參數來設置 Action 屬性之前,使用 IoC 框架設置 Action 的屬性,反之已然。這時,你就可以為 package Action 指定一個攔截器棧來實現。

    ?


    ?

    ?

    WebWork 的項目資源

    下面是我在研究 WebWork 時,使用的資源和研究過的項目,希望能對你能有幫助。

    1、? 當然就是 WebWork 的官方網站: http://www.opensymphony.com/webwork/

    里面有最新的 WebWork 文檔和它的一個 wiki

    2、? 一本好書: Java Open Source Programming : with XDoclet, JUnit, WebWork, Hibernate ,里面有很好的 WebWork 教程。它附帶的源代碼可以去 http://www.amazon.com/ 下載,里面的 petsoar 是一個非常好的 WebWork 開源項目。

    3、? Confluence http://www.atlassian.com/software/confluence )是專業的 J2EE wiki, 用于知識管理和項目組交流。它使用的架構是 webwork2+Spring+Hibernate Confluence 雖是商業軟件,不過對于 OpenSource 的項目它全部免費提供。它的架構思想很值得我們去學習。

    4、? OpenReports(http://www.opensourcesoft.net) 是一個開源的項目,基于 Web 的報表系統。它用到的技術有: WebWork 2.0 Velocity Hibernate

    參考資料

    http://www.opensymphony.com/

    ?

    posted on 2006-07-21 16:59 The Spark of Thinking 閱讀(347) 評論(1)  編輯  收藏 所屬分類: Talk

    評論

    # re: 準備放棄struts,因為它是一個拙劣的設計! 2010-05-06 19:19 鼓勵但到
    最佳解決辦法: 放棄JAVA轉向C#,SUN已被ORACLE收購,已命存實亡!!!!  回復  更多評論
      

    主站蜘蛛池模板: 免费观看91视频| 无码av免费网站| 亚洲色精品vr一区二区三区 | 大地影院MV在线观看视频免费| 亚洲精品高清视频| 成人黄动漫画免费网站视频 | a级毛片在线视频免费观看| 亚洲成a人不卡在线观看| 在线a亚洲v天堂网2018| 中文字幕在线观看免费视频| 久久精品国产亚洲AV电影网| 亚洲视频精品在线| 免费欧洲美女牲交视频| 小日子的在线观看免费| 男人的天堂av亚洲一区2区| 亚洲视频2020| 亚洲性日韩精品国产一区二区| 精品免费人成视频app | 国产精品国产自线拍免费软件| 日韩免费在线观看视频| 国产精品亚洲精品日韩电影| 老司机亚洲精品影院无码| 免费人成网站在线高清| 国产精品免费精品自在线观看| 精选影视免费在线 | 亚洲爆乳成av人在线视菜奈实| 亚洲天堂男人天堂| 亚洲熟女乱综合一区二区| 99久久免费精品国产72精品九九| 久久国产精品国产自线拍免费| 最好2018中文免费视频| 亚洲不卡在线观看| 久久精品国产亚洲av麻| 亚洲人成网站在线观看青青| 德国女人一级毛片免费| 亚洲免费在线视频观看| 久章草在线精品视频免费观看| 丁香六月婷婷精品免费观看| 亚洲精品久久无码av片俺去也 | 亚洲AV成人影视在线观看| 久久久久亚洲AV无码专区体验|