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

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

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

    隨筆 - 6  文章 - 0  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(2)

    隨筆分類

    文章分類

    好友

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    最近在編寫Struts教程的時候,把Struts1.1到1.2的個版本變化總結了一下,希望能夠從整體上把握它的變遷脈絡,在開發和維護的時候也可以參考參考。



    Struts1.1的修改

    新特征

    引入新的配置DTD

    Struts 1.0 的配置DTD 已經不贊成使用,引入了新的struts-config_1_1.dtd。在Struts 1.1 中,已有的Struts 配置文件可以使用這兩個版本的DTD載入。

    新的Commons 包依賴性

    在Struts中使用了多個Apache Jarkarta commons的組件,而Commons組件并不僅僅可以用來構建Struts應用。在Struts1.1中,所使用的Commons組件已經重構來外部依賴于Jarkarta Commons項目,而不是1.0中的內部版本。
    下面的Commons包包括了對相應的Struts 1.0 中的類的替代:

    1. BeanUtils [org.apache.commons.beanutils]:
      1. org.apache.struts.utils.BeanUtils
      2. org.apache.struts.utils.ConvertUtils
      3. org.apache.struts.utils.PropertyUtils.
    2. Collections [org.apache.commons.collections]
      1. org.apache.struts.util.ArrayStack
      2. org.apache.struts.util.FastArrayList
      3. org.apache.struts.util.FastHashMap
      4. org.apache.struts.util.FastTreeMap.
    3. Digester [org.apache.commons.digester]
      1. org.apache.struts.digester.*.

    下面這幾個包現在仍然被Struts框架的各種組件使用:

    1. FileUpload [org.apache.commons.fileupload]
    2. Logging [org.apache.commons.logging]
    3. Validator [org.apache.commons.validator]

    XML解析器

    另外,Struts 1.1 需要符合JAXP/1.1 (而不是JAXP/1.0) API的XML解析器,比如JAXP/1.1 參考實現和Xerces 1.3.1+。

    源代碼

    如果需要從源代碼開始構建Struts,請使用Ant 1.4 以上版本。

    集成Struts Validator

    一個新的Commons Validator組件被集成到Struts 1.1中,包含在新的Validator包中。

    Tiles

    引入了一個新的JSP模板組裝機制Tiles,通過標簽庫提供集成。

    Nested

    Nested taglib 綁定到了Struts1.1中,增強了現有Struts標簽的功能。

    新的示例應用

    Struts1.1發布包中包括了針對Validator 和Tiles的新的示例。

    新的可選組件

    CVS源代碼庫中新增了一個目錄contrib,包含了很有用的,但是沒有集成到標準代碼基中的擴展。

    1. Scaffold – 一個對Commons Scaffold 工具包擴展,旨在提供可重用的構建Web應用的類
    2. Struts-EL – 可選的Struts-EL taglib 使得在Struts 中使用JSTL更加容易。(需要Servlet 2.3 +容器支持)

    Action 包的增加

    基本的控制器框架 [org.apache.struts.action]新增了一下特征:

    1. ActionServlet 現在提供了對模塊化應用的支持,并且新增了多個擴展點。
    2. 新增了一個ActionMessages 類,支持ActionErrors功能的一個超集,可以用于通用的消息收集傳遞,不僅僅針對errors。

    Upload 包

    文件上傳類[org.apache.struts.upload]新增了一下特征:

    1. CommonsMultipartRequestHandler:這個新類使用Jakarta Commons FileUpload 包實現了文件上傳。這也是Struts的默認文件上傳實現。

    Util 包

    工具(utility)類 [org.apache.struts.util]新增了以下特征:

    1. LocalStrings: 修正了與可替換參數相關的消息,以便它不會添加一個外來的無關的字符。
    2. LabelValueBean: 一個新類,定義了一個名值對的集合,可以用在<html:options> 和<html:optionsCollection>標簽,或者其它地方。
    3. MessageResources: 轉移包含在特定消息字符串中的單引號。
    4. computeParameters: 允許事務令牌是唯一的參數。
    5. RequestUtils: 在構建一個查詢字符串時,修改來編碼一個&號。

    Bean Taglib

    struts-bean 標簽庫[org.apache.struts.taglib.bean]中新增了以下特征:

    1. <bean:write>:加入了format, locale 和 bundle 屬性以支持根據用戶當前場所進行格式化的功能,格式化來自屬性或者來自字符串資源的字符串。
    2. <bean:cookie>, <bean:header>, 或<bean:parameter>:糾正了在標簽使用"multiple"屬性時,所產生的腳本變量類型。
    3. <bean:message>:加入了name, property, 和scope 屬性,以便消息資源key 可以動態地從一個bean 或者bean 屬性獲得。

    HTML Taglib

    struts-html [org.apache.struts.taglib.html]加入了如下新特征:

    1. <html:link>: 添加了'action' 屬性
    2. <html:options>: 如果'property' 屬性制定的屬性(property)返回null,現在標簽將拋出一個錯誤消息指名實際問題而不是造成NPE。
    3. <html:option> 和 <html:options>:添加了'style' 和'styleClass' 屬性。
    4. <html:optionsCollection>:新標簽。提供了一個更清晰的方式來從集合組裝HTML options。
    5. <bean:message>:添加了'name', 'property' 和'scope' 屬性,以便消息資源key 可以動態地從bean獲得。
    6. <html:messages>:新標簽??梢酝ㄟ^新的ActionMessages 類中的一個消息集合進行迭代。
    7. ActionForm:現在,此標簽在它初始化ActionForm Bean的時候會調用reset() 方法。它也要求被標簽所實例化的bean 是ActionForm 的一個子類。
    8. <html:image>:添加了'align' attribute。
    9. <html:img>:添加了mouse 事件屬性('onclick', 'ondblclick', 'onmousedown', 'onmouseup', 'onmouseover', 'onmousemove', 'onmouseout')。
    10. SubmitTag, SelectTag, LinkTag.java, CheckboxTag, ButtonTag, ImageTag, RadioTag, 和TextArea 標簽: 添加了indexed 屬性。

    Logic Taglib

    struts-logic 標簽庫[org.apache.struts.taglib.logic]加入了如下新特征:

    1. <logic:empty> 和<logic:notEmpty>:新標簽。類似于<logic:present> 和<logic:notPresent>,但對空字符串的處理不同。

    Template Taglib

    無變化,但無贊成使用。推薦使用Tiles.

    運性層面的改變

    加入了Config Package

    1. ControllerConfig:添加了inputForward 屬性以指示ActionMapping.input是一個forward 而不是URI。
    2. ControllerConfig:添加了forwardPattern 和inputPattern 到help 應用面模塊的管理頁面目錄
    3. 添加了一個新的包以提供更多的靈活性來支持控制器配置和多模塊應用的支持。

    Action 包

    基本框架(org.apache.struts.action)進行了如下修改或者修正:

    1. Action 類中的所有常數:不贊成使用。提取到新的Globals類中。
    2. ActionMapping:如果模塊的ControllerConfig bean [org.apache.struts.config.ControllerConfig]的inputForward 設置為true,input 屬性將引用一個ActionForward 而不是模塊相對的路徑。
    3. ActionServlet:添加了convertNull 參數以在組裝Form時仿真Struts 1.0 行為。如果設置為true,數值numeric Java wrapper 類類型 (如java.lang.Integer) 將默認為null (而不是0)。
    4. ActionServlet:添加了"config/$foo" 參數,不贊成使用包中的其他參數。
    5. ActionForms 和相關類:為了保存資源,現在在響應toString請求的時候使用一個StringBuffer。
    6. LookupDispatchAction:添加的新的標準Action,以幫助在國際化的按鈕之間進行選擇。
    7. ActionForm 類:修改來使用ActionServletWrapper 而不是暴露ActionServlet。
    8. ActionServletWrapper 類:添加的新類,用于ActionForm,以防止ActionServlet 的公開字符串屬性被通過查詢字符串改寫。
    9. Action.MAPPING_KEY的 request 屬性: 如果沒有指定form bean,無條件地將選擇的mapping 傳遞為請求屬性("org.apache.struts.action.mapping.instance")。
    10. ActionServlet:避免了在初始化Servlet失敗的時候導致的NullPointerException。
    11. ActionForm 類:現在是真正的serializable,因為兩個非serializable 的實例變量(servlet 和multipartRequestHandler) 已經成為transient。但是,如果你的確需要序列化和解序列化這個實例,你要自己負責重設這兩個屬性。
    12. ActionMessages 和ActionErrors:The initial order a property/key is added in is now retained.
    13. processActionForward(): 不贊成,推薦使用processForwardConfig

    Upload包

    文件上傳 (package org.apache.struts.upload) [ Upload 應用的一部分]作了如下修改和修正:
    1. CommonsMultipartRequestHandler:基于Jakarta Commons FileUpload 包的文件上傳的新實現。這個新實現如今是默認實現。
    2. BufferedMultipartInputStream:解決了丟失字節的問題。
    3. ArrayIndexOutOfBoundsException:解決了已知的錯誤。
    4. Multipart requests:Better reporting for premature closing of input streams while reading multipart requests.
    5. 新行字符(New line characters):解決了上傳和新換行字符時導致的文件損壞問題。

    Utility包

    utilities (package org.apache.struts.util)發生如下修改和修正:

    1. RequestUtils:添加了對ControllerConfig 的forwardPattern, pagePattern, 和inputForward 屬性的支持。
    2. GenericDataSource:不贊成。修改為作為[org.apache.commons.dbpc.BasicDataSource]的一個薄的Wrapper。建議直接使用BasicDataSource 或其它兼容組件。
    3. RequestUtils 類:修改為使用ActionServletWrapper而不是暴露 ActionServlet。
    4. 為getActionErrors 和 getActionMessages 方法添加了錯誤消息。
    5. getActionErrors 和 getActionMessages:添加了根據基于傳入的消息關鍵字從Request范圍獲取的對象來產生正確的相應對象的方法。
    6. ActionErrors 或 ActionMessages:創建一個這種對象的邏輯被移到了RequestUtils中的一個工具方法。.
    7. JspException 消息:現在在RequestUtils中生成。
    8. ConvertUtils.convertCharacter():現在將檢測空字符串并返回默認值。

    Bean Taglib包

    struts-bean c標簽庫 [org.apache.struts.taglib.bean]發生了如下修改和修正:
    1. <html:errors>:當指定了屬性標簽時,如果指定的屬性沒有發生錯誤,則不會輸出錯誤。而前面的錯誤將總是會被輸出。未來的增強版本將包括額外的屬性來關閉header 或 footer。
    2. 將helper 方法從"private"改為 "protected" 。

    HTML Taglib 包

    struts-html 標簽庫(package org.apache.struts.taglib.html)發生了如下修改和修正:

    1. FormTag:修正為,當指定了action mapping的名稱時,要排除查詢字符串。
    2. ImgTag:如果只有一個參數,能正確地URLEncode 查詢字符串參數。
    3. MultiboxTag.doAfterBody()::修正為返回SKIP_BODY 而不是SKIP_PAGE。
    4. Errortag:不贊成使用defaultLocale方法。

    Documentation 示例應用

    Struts Documentation 應用(對應Struts 網站的內容)發生了如下修改:

    1. 重新組織了資源到單獨的頁面中。
    2. 在Tag Developers Guide中,添加了更詳細的文件上傳要求。
    3. 在Building View Components,澄清了額外的i18n 支持可以由瀏覽器提供,并且超出了框架的范圍。
    4. 在Building Controller Components一節,文檔 'validating' init-param,添加了各種參數的默認值,澄清了某些web.xml 設置不是Struts特定的。
    5. Tag library 文檔:移到User's Guide下。

    MailReader 示例應用

    Struts MailReader Example Application 發生如下修改和修正:

    1. 添加了應用資源的 Russian 和Japanese 翻譯,并且設置JSP的字符集為"UTF-8"以便其可以顯示English 或Japanese。
    2. 在Struts配置文件中交換了Edit mappings的"attribute" 屬性的"name" 。
    3. 刪除了對"tour"文檔中的保存的數據庫數據的引用,因為這個功能已經被刪除。

    Exercise Taglib 示例應用

    Struts Exercise Taglib Example Application 發生了如下修改和修正:

    1. 添加了針對使用了"action"屬性的<html:link> 的test case 。
    2. 添加了針對基于保存在page上下文中的集合使用<html:options> 和 <html:optionsCollection>的<html:select> 的test case。

    不同之處

    這里列出1.0到1.1中新增的類和已經不贊成使用的類:

    1.0中不贊成使用,1.1中已經刪除的類。

    1. 刪除:org.apache.struts.utils.BeanUtils, org.apache.struts.utils.ConvertUtils, and org.apache.struts.utils.PropertyUtils – 替換為org.apache.commons.beanutils
    2. 刪除:org.apache.struts.util.ArrayStack, org.apache.struts.util.FastArrayList, org.apache.struts.util.FastHashMap, org.apache.struts.util.FastTreeMap – 替換為org.apache.commons.collections
    3. 刪除: org.apache.struts.digester.* - 替換為org.apache.commons.digester
    4. 刪除:struts-config.dtd – 替換為struts-config_1_1.dtd.
    5. 刪除:omnibus "struts" taglib 和其相應的TLD – 替換為bean, logic, 和html taglib。
    6. 刪除:"form" taglib 和其相應的TLD – 替換為html taglib.

    Struts 1.1新增的包

    1. config
    2. taglib.nested
    3. taglib.nested.bean
    4. taglib.nested.html
    5. taglib.nested.logic
    6. validator

    Struts 1.1新增的類

    action

    1. ActionMessage
    2. ActionMessages
    3. DynaActionForm
    4. DynaActionFormClass
    5. ExceptionHandler
    6. RequestProcessor

    actions

    1. LookupDispatchAction

    taglib.html

    1. FrameTag
    2. JavascriptValidatorTag
    3. MessagesTag
    4. OptionsCollectionTag

    taglib.logic

    1. EmptTag
    2. MessagesNotPresentTag
    3. MessagesPresentTag
    4. NotEmptyTag

    upload

    1. CommonsMultipartRequestHandler

    util

    1. LabelValueBean

    Struts 1.1中新增的類成員

    action.Action

    1. ACTION_SERVLET_KEY
    2. APPLICATION_KEY
    3. MESSAGE_KEY
    4. PLUG_INS_KEY
    5. REQUEST_PROCESSOR_KEY
    6. execute
    7. getResources(javax.servlet.http.HttpServletRequest)
    8. saveMessages

    action.ActionServlet

    1. configDigester
    2. convertHack
    3. log
    4. processor
    5. getInternal
    6. destroyApplications
    7. destroyConfigDigester
    8. getApplicationConfig
    9. getRequestProcessor
    10. initApplicationConfig
    11. initApplicationDataSources
    12. initApplicationPlugIns
    13. initApplicationMessageResources
    14. initConfigDigester
    15. methods created for backward-compatiblity only
      1. defaultControllerConfig
      2. defaultFormBeansConfig
      3. defaultForwardsConfig
      4. defaultMappingsConfig
      5. defaultMessageResourcesConfig

    taglib.html.BaseHandlerTag

    1. indexed
    2. setIndexed
    3. getIndexed

    Struts 1.0 到Struts 1.1不贊成的類

    action

    1. ActionException
    2. ActionFormBeans
    3. ActionForwards
    4. ActionMappings

    Struts 1.0 不贊成的類成員

    action.Action

    1. FORM_BEANS_KEY
    2. FORWARDS_KEY
    3. MAPPINGS_KEY
    4. getResources()
    5. perform

    ActionServlet

    1. findDataSource
    2. findFormBean
    3. findForward
    4. findMapping
    5. initDataSources
    6. methods created for backward-compatiblity only
      1. defaultControllerConfig
      2. defaultFormBeansConfig
      3. defaultForwardsConfig
      4. defaultMappingsConfig
      5. defaultMessageResourcesConfig
    posted on 2006-05-15 17:04 badboy 閱讀(232) 評論(0)  編輯  收藏 所屬分類: Framework
    主站蜘蛛池模板: 国产精品hd免费观看| 国产亚洲成在线播放va| 免费一级毛片无毒不卡| 亚洲午夜福利在线观看| 一级免费黄色大片| 亚洲AV无码乱码精品国产| 美女免费精品高清毛片在线视| 波多野结衣久久高清免费 | 国产成人涩涩涩视频在线观看免费| 亚洲色偷偷综合亚洲av78| 成年轻人网站色免费看| 亚洲国产美女精品久久久| 少妇亚洲免费精品| 91在线视频免费观看| 亚洲精品免费在线视频| 在线观看免费污视频| 国产亚洲精品美女| 亚洲一区爱区精品无码| 一级毛片成人免费看免费不卡| 666精品国产精品亚洲| 无码人妻一区二区三区免费手机| 亚洲精品无码久久| 亚洲精品A在线观看| 黄网站免费在线观看| 亚洲最大成人网色香蕉| 亚洲?v女人的天堂在线观看| 中文字幕日本人妻久久久免费| 亚洲黄色免费网站| 香蕉视频在线观看免费国产婷婷 | 午夜一级毛片免费视频| 免费看黄福利app导航看一下黄色录像| 中文字幕亚洲电影| **俄罗斯毛片免费| 男女交性无遮挡免费视频| 国产亚洲免费的视频看| 毛片A级毛片免费播放| 插鸡网站在线播放免费观看| 亚洲国产高清在线精品一区| 亚洲?v女人的天堂在线观看| 狼群影院在线观看免费观看直播| 亚洲av永久中文无码精品综合|