隨筆-199  評論-203  文章-11  trackbacks-0
           

          一、Struts2 的簡介

          1.         雖然 struts2 號稱是一個全新的框架,但是這僅僅是相對于 struts1 而言的.

          2.         Struts2 struts1 相比,確實有很多革命性的改進,但是并不是新發布的新框架

          3.         是另一個框架 WebWork 基礎上發展起來的.

          4.          Struts2 沒有繼承 struts1 的血統,而是繼承 webWork 的血統.

          5.         struts2 WebWork 的升級,而不是一個全新的框架,穩定性和性能等各方面都有很好的保證

          6.          而且吸收了 struts1 WebWork 兩者的優勢,因此是一個非常值得期待的框架

          二、 Apache Struts2 是一個可擴展的 Java EE WEB框架. 框架設計的目標貫穿整個開發的周期

          三、 Struts2 Struts1 的不同

          1.         Action:

                                   i.               Struts1 要求 Action 類繼承一個抽象基類. Struts1 的一個普遍的問題是使用抽象類編程而不是接口

                                 ii.              Struts2 Action 類可以實現一個 Action 接口,也可實現其他的接口,使可選和定制的服務稱為可能.

                                iii.               Struts2 提供了一個 ActionSupport 基類去實現常用的接口; Action接口不是必須的,任何有 execute 標識的POJO
          對象都可以用作 Struts2 Action 對象

          2.          線程模式:

                                   i.               Struts1 Action 是單例的模式并且必須是線程安全的,因為僅有 Action 的一個實例來處理所有的請求.單例的策略限制了

                                 ii.              Struts1 Action 能做的事情,并且要在開發的時候特別的小心. Action 資源必須是線程安全或者同步的

                                iii.               Struts2 Action 對象為每一個請求產生一個實例,因此沒有線程安全的問題

          3.          Servlet依賴:

                                   i.               Struts1 Action 依賴于 Servlet API,因為當一個Action被調用 HttpServletRequest HttpServletResponse 被傳遞給 execute() 方法

                                 ii.              Struts2 Action 不依賴于容器,允許 Action 脫離容器單獨的被測試.如果需要的話 Struts2 Action 仍然可以訪問初始的 request response

                                iii.              但是,其他的元素減少或者消除了直接訪問 HttpServletRequest HttpServletResponse 的必要性

          4.         可測性:

                                   i.              Struts1 Action 測試的一個主要的問題是 execute 方法暴露了 Servlet API (使得測試要依賴容器).一個第三方的擴展

                                 ii.              Struts TestCase -- 提供了一套 Struts1 的模擬對象 (來進行測試)

                                iii.               Struts2 Action 可以通過初始化, 設置屬性,調用方法來測試 "依賴注入" 支持也使得測試更加的容易

          5.         捕獲輸入:

                                   i.               Struts1 Action 使用ActionForm對象來捕獲輸入.所有的 ActionForm 必須繼承一個基類.因為其他的JavaBean 不能用作

                                 ii.              ActionForm ,開發者經常創建多余的類捕獲輸入.動態的 Bean (DynaBeans) 可以作為創建傳統的ActionForm選擇,但是,開發者可能是在重新描述(創建)已經存在的 JavaBean

                                iii.              會導致冗余的 JavaBean)

                               iv.               Struts2 Action 直接使用 Action 屬性作為輸入的屬性,消除了對第二個輸入對象的需求. Action 屬性能夠通過web頁面上的
          taglibs
          訪問. Struts2 也支持 ActionForm 模式

          6.          表達式語言:

                                   i.              Struts1 整合了 JSTL ,因此使用 JSTL EL .這種EL 的基本的對象圖遍歷,但是對集合和索引屬性的支持很弱

                                 ii.               Struts2 可以使用 JSTL ,但是也支持一個更強大的和靈活的表達式語言 -- "Object Graph Notation Language" (OGNL)

          7.          綁定值到頁面 (view) :

                                   i.              Struts1 使用標準 JSP 機制把對象綁定到頁面來訪問

                                 ii.              Struts2 使用 "ValueStack" 技術,使 taglib 能夠訪問值而不需要把你的頁面 (view) 和對象綁定起來

                                iii.              ValueStack 策略允許通過一些列的名稱相同但是類型不同的屬性重用頁面 (view)

          8.         類型的轉換 :

                                   i.               Struts1 ActionForm 屬性通常都是 String 類型的. Struts1使用 Commons-Beanutils 進行類型的轉換,每個類一個轉換器,對每一個實例來說是不可配置的

                                 ii.               Struts2 使用OGNL 進行類型的轉換. 提供基本的和常用的對象的轉換器

          9.          校驗 :

                                   i.               Struts1 支持在 ActioNForm validate 方法中手動的校驗,或者通過 Commons Validator 的擴展來校驗.同一個類可以有不同的校驗內容,但不能校驗子對象

                                 ii.               Struts2 支持通過 validate 方法和 XWork 校驗框架來進行校驗. XWork 校驗框架使用為屬性類類型定義的校驗和內容校驗
          來支持 chain 校驗子屬性

          10.      Action 執行的控制 :

                                   i.              Struts1 支持每一個模塊有單獨的 Request Processors (生命周期);但是模塊中的所有的 Action 必須功效那個相同的生命周期

                                 ii.               Struts2 支持通過攔截器堆棧 (Interceptor Stacks) 為每一個 Action 創建不同的生命周期.

                                iii.              堆棧能夠根據需要和不同的 Action 一起使用

          四、 Eclipse 中繼承 Struts2

          1.         commons-logging-1.0.4.jar
              Struts2
          框架的日志包

          2.         freemarker-2.3.8.jar 
              Struts2
          UI 標簽的模板

          3.          ognl-2.6.11.jar
             
          對象導航語言包

          4.         struts2-core.2.0.11.jar 
              Struts
          框架的核心包

          5.         xwork-2.0.4.jar 
              XWork
          類庫,Struts2 基于此構建

          五、案例

          1.          基于 Struts2 創建一個簡單的登陸項目

          2.          導入 Struts2 核心支持包

          3.           web.xml 中配置 FilterDispatcher

          4.          開發 DAO

          5.         開發  action

          6.          編寫前臺顯示的頁面

          7.          創建 struts.xml

          六、 Struts2 處理用戶輸入信息

          1.          利用 action 類的屬性接受用戶輸入

          2.          利用領域對象接受用戶輸入

          3.          使用 ModelDriver 模式接受用戶輸入

          posted on 2010-02-22 09:20 Werther 閱讀(668) 評論(0)  編輯  收藏 所屬分類: 20.Struts
          主站蜘蛛池模板: 通城县| 乌审旗| 徐州市| 泸定县| 大城县| 碌曲县| 汽车| 广汉市| 固镇县| 焉耆| 京山县| 吕梁市| 咸宁市| 牟定县| 高碑店市| 辽阳县| 邓州市| 璧山县| 阳山县| 琼海市| 周宁县| 余姚市| 历史| 工布江达县| 孟连| 礼泉县| 德安县| 景东| 盈江县| 兴化市| 于田县| 吉安县| 棋牌| 上蔡县| 海兴县| 巴东县| 马尔康县| 宁德市| 南漳县| 共和县| 迁安市|