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

          一、Struts2 的簡介

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

          2.         Struts2 struts1 相比,確實有很多革命性的改進(jìn),但是并不是新發(fā)布的新框架

          3.         是另一個框架 WebWork 基礎(chǔ)上發(fā)展起來的.

          4.          Struts2 沒有繼承 struts1 的血統(tǒng),而是繼承 webWork 的血統(tǒng).

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

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

          二、 Apache Struts2 是一個可擴(kuò)展的 Java EE WEB框架. 框架設(shè)計的目標(biāo)貫穿整個開發(fā)的周期

          三、 Struts2 Struts1 的不同

          1.         Action:

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

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

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

          2.          線程模式:

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

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

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

          3.          Servlet依賴:

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

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

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

          4.         可測性:

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

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

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

          5.         捕獲輸入:

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

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

                                iii.              會導(dǎo)致冗余的 JavaBean)

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

          6.          表達(dá)式語言:

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

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

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

                                   i.              Struts1 使用標(biāo)準(zhǔn) JSP 機制把對象綁定到頁面來訪問

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

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

          8.         類型的轉(zhuǎn)換 :

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

                                 ii.               Struts2 使用OGNL 進(jìn)行類型的轉(zhuǎn)換. 提供基本的和常用的對象的轉(zhuǎn)換器

          9.          校驗 :

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

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

          10.      Action 執(zhí)行的控制 :

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

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

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

          四、 Eclipse 中繼承 Struts2

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

          2.         freemarker-2.3.8.jar 
              Struts2
          UI 標(biāo)簽的模板

          3.          ognl-2.6.11.jar
             
          對象導(dǎo)航語言包

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

          5.         xwork-2.0.4.jar 
              XWork
          類庫,Struts2 基于此構(gòu)建

          五、案例

          1.          基于 Struts2 創(chuàng)建一個簡單的登陸項目

          2.          導(dǎo)入 Struts2 核心支持包

          3.           web.xml 中配置 FilterDispatcher

          4.          開發(fā) DAO

          5.         開發(fā)  action

          6.          編寫前臺顯示的頁面

          7.          創(chuàng)建 struts.xml

          六、 Struts2 處理用戶輸入信息

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

          2.          利用領(lǐng)域?qū)ο蠼邮苡脩糨斎?/span>

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

          posted on 2010-02-22 09:20 Werther 閱讀(676) 評論(0)  編輯  收藏 所屬分類: 20.Struts
          主站蜘蛛池模板: 樟树市| 郎溪县| 英超| 隆林| 资源县| 景宁| 三亚市| 瑞金市| 黄龙县| 玛曲县| 安乡县| 平遥县| 海丰县| 湘西| 高平市| 乐业县| 双城市| 仪陇县| 易门县| 东台市| 明溪县| 马尔康县| 曲沃县| 宁都县| 乌拉特中旗| 玉山县| 旅游| 庐江县| 射阳县| 乌什县| 朝阳县| 莎车县| 兰溪市| 互助| 绿春县| 宁都县| 六枝特区| 通城县| 射洪县| 吴川市| 望江县|