<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)

    隨筆分類

    文章分類

    好友

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    最近在編寫Struts教程的時(shí)候,把Struts1.1到1.2的個(gè)版本變化總結(jié)了一下,希望能夠從整體上把握它的變遷脈絡(luò),在開發(fā)和維護(hù)的時(shí)候也可以參考參考。



    Struts1.1的修改

    新特征

    引入新的配置DTD

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

    新的Commons 包依賴性

    在Struts中使用了多個(gè)Apache Jarkarta commons的組件,而Commons組件并不僅僅可以用來構(gòu)建Struts應(yīng)用。在Struts1.1中,所使用的Commons組件已經(jīng)重構(gòu)來外部依賴于Jarkarta Commons項(xiàng)目,而不是1.0中的內(nèi)部版本。
    下面的Commons包包括了對(duì)相應(yīng)的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.*.

    下面這幾個(gè)包現(xiàn)在仍然被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 參考實(shí)現(xiàn)和Xerces 1.3.1+。

    源代碼

    如果需要從源代碼開始構(gòu)建Struts,請(qǐng)使用Ant 1.4 以上版本。

    集成Struts Validator

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

    Tiles

    引入了一個(gè)新的JSP模板組裝機(jī)制Tiles,通過標(biāo)簽庫提供集成。

    Nested

    Nested taglib 綁定到了Struts1.1中,增強(qiáng)了現(xiàn)有Struts標(biāo)簽的功能。

    新的示例應(yīng)用

    Struts1.1發(fā)布包中包括了針對(duì)Validator 和Tiles的新的示例。

    新的可選組件

    CVS源代碼庫中新增了一個(gè)目錄contrib,包含了很有用的,但是沒有集成到標(biāo)準(zhǔn)代碼基中的擴(kuò)展。

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

    Action 包的增加

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

    1. ActionServlet 現(xiàn)在提供了對(duì)模塊化應(yīng)用的支持,并且新增了多個(gè)擴(kuò)展點(diǎn)。
    2. 新增了一個(gè)ActionMessages 類,支持ActionErrors功能的一個(gè)超集,可以用于通用的消息收集傳遞,不僅僅針對(duì)errors。

    Upload 包

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

    1. CommonsMultipartRequestHandler:這個(gè)新類使用Jakarta Commons FileUpload 包實(shí)現(xiàn)了文件上傳。這也是Struts的默認(rèn)文件上傳實(shí)現(xiàn)。

    Util 包

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

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

    Bean Taglib

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

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

    HTML Taglib

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

    1. <html:link>: 添加了'action' 屬性
    2. <html:options>: 如果'property' 屬性制定的屬性(property)返回null,現(xiàn)在標(biāo)簽將拋出一個(gè)錯(cuò)誤消息指名實(shí)際問題而不是造成NPE。
    3. <html:option> 和 <html:options>:添加了'style' 和'styleClass' 屬性。
    4. <html:optionsCollection>:新標(biāo)簽。提供了一個(gè)更清晰的方式來從集合組裝HTML options。
    5. <bean:message>:添加了'name', 'property' 和'scope' 屬性,以便消息資源key 可以動(dòng)態(tài)地從bean獲得。
    6. <html:messages>:新標(biāo)簽。可以通過新的ActionMessages 類中的一個(gè)消息集合進(jìn)行迭代。
    7. ActionForm:現(xiàn)在,此標(biāo)簽在它初始化ActionForm Bean的時(shí)候會(huì)調(diào)用reset() 方法。它也要求被標(biāo)簽所實(shí)例化的bean 是ActionForm 的一個(gè)子類。
    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 標(biāo)簽: 添加了indexed 屬性。

    Logic Taglib

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

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

    Template Taglib

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

    運(yùn)性層面的改變

    加入了Config Package

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

    Action 包

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

    1. Action 類中的所有常數(shù):不贊成使用。提取到新的Globals類中。
    2. ActionMapping:如果模塊的ControllerConfig bean [org.apache.struts.config.ControllerConfig]的inputForward 設(shè)置為true,input 屬性將引用一個(gè)ActionForward 而不是模塊相對(duì)的路徑。
    3. ActionServlet:添加了convertNull 參數(shù)以在組裝Form時(shí)仿真Struts 1.0 行為。如果設(shè)置為true,數(shù)值numeric Java wrapper 類類型 (如java.lang.Integer) 將默認(rèn)為null (而不是0)。
    4. ActionServlet:添加了"config/$foo" 參數(shù),不贊成使用包中的其他參數(shù)。
    5. ActionForms 和相關(guān)類:為了保存資源,現(xiàn)在在響應(yīng)toString請(qǐng)求的時(shí)候使用一個(gè)StringBuffer。
    6. LookupDispatchAction:添加的新的標(biāo)準(zhǔn)Action,以幫助在國際化的按鈕之間進(jìn)行選擇。
    7. ActionForm 類:修改來使用ActionServletWrapper 而不是暴露ActionServlet。
    8. ActionServletWrapper 類:添加的新類,用于ActionForm,以防止ActionServlet 的公開字符串屬性被通過查詢字符串改寫。
    9. Action.MAPPING_KEY的 request 屬性: 如果沒有指定form bean,無條件地將選擇的mapping 傳遞為請(qǐng)求屬性("org.apache.struts.action.mapping.instance")。
    10. ActionServlet:避免了在初始化Servlet失敗的時(shí)候?qū)е碌腘ullPointerException。
    11. ActionForm 類:現(xiàn)在是真正的serializable,因?yàn)閮蓚€(gè)非serializable 的實(shí)例變量(servlet 和multipartRequestHandler) 已經(jīng)成為transient。但是,如果你的確需要序列化和解序列化這個(gè)實(shí)例,你要自己負(fù)責(zé)重設(shè)這兩個(gè)屬性。
    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 應(yīng)用的一部分]作了如下修改和修正:
    1. CommonsMultipartRequestHandler:基于Jakarta Commons FileUpload 包的文件上傳的新實(shí)現(xiàn)。這個(gè)新實(shí)現(xiàn)如今是默認(rèn)實(shí)現(xiàn)。
    2. BufferedMultipartInputStream:解決了丟失字節(jié)的問題。
    3. ArrayIndexOutOfBoundsException:解決了已知的錯(cuò)誤。
    4. Multipart requests:Better reporting for premature closing of input streams while reading multipart requests.
    5. 新行字符(New line characters):解決了上傳和新?lián)Q行字符時(shí)導(dǎo)致的文件損壞問題。

    Utility包

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

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

    Bean Taglib包

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

    HTML Taglib 包

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

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

    Documentation 示例應(yīng)用

    Struts Documentation 應(yīng)用(對(duì)應(yīng)Struts 網(wǎng)站的內(nèi)容)發(fā)生了如下修改:

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

    MailReader 示例應(yīng)用

    Struts MailReader Example Application 發(fā)生如下修改和修正:

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

    Exercise Taglib 示例應(yīng)用

    Struts Exercise Taglib Example Application 發(fā)生了如下修改和修正:

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

    不同之處

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

    1.0中不贊成使用,1.1中已經(jīng)刪除的類。

    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 和其相應(yīng)的TLD – 替換為bean, logic, 和html taglib。
    6. 刪除:"form" taglib 和其相應(yīng)的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) 評(píng)論(0)  編輯  收藏 所屬分類: Framework
    主站蜘蛛池模板: 中出五十路免费视频| 色偷偷亚洲男人天堂| 少妇性饥渴无码A区免费| 又大又硬又爽免费视频| 激情小说亚洲图片| 在线视频免费国产成人| 精品亚洲福利一区二区| 天堂亚洲免费视频| 一个人看的在线免费视频| 亚洲欧洲国产成人综合在线观看 | 亚洲性日韩精品国产一区二区| 色屁屁www影院免费观看视频| 又爽又高潮的BB视频免费看| 成人一级免费视频| 亚洲乱码日产一区三区| 99久久人妻精品免费一区| 久久综合亚洲色HEZYO社区| 国产在线jyzzjyzz免费麻豆| 亚洲人成网站色7799| 亚洲午夜日韩高清一区| 无码精品国产一区二区三区免费 | 亚洲国产婷婷香蕉久久久久久| 一级做a爱过程免费视| 亚洲av永久无码精品古装片| 永久看日本大片免费35分钟| 亚洲精品无码国产片| 亚洲性在线看高清h片| 色欲A∨无码蜜臀AV免费播| 亚洲已满18点击进入在线观看| 国产一级一片免费播放| 免费无码av片在线观看| 久久精品亚洲AV久久久无码| 亚洲高清无码专区视频| 免费无码VA一区二区三区| 亚洲人成www在线播放| 国产精品亚洲综合一区| 国产免费女女脚奴视频网| 久久久久亚洲AV无码去区首| 国产精品亚洲片在线| 日韩精品视频免费网址| 久久青草精品38国产免费|