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

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

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

    Love Pisces

    It's not your aptitude but your attitude that determines your altitude!
    posts - 2, comments - 43, trackbacks - 0, articles - 9

    Struts應(yīng)用之ActionForm

    Posted on 2007-06-04 13:47 筱筱 閱讀(488) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Struts學(xué)習(xí)日記

    Struts框架中的視圖組件主要包括:
        ·JSP頁(yè)面
        ·ActionForm類(lèi)
        ·Struts自定義標(biāo)記
        ·消息資源
           其中,ActionForm類(lèi)是Struts框架的核心組件之一,是Struts的關(guān)鍵視圖組件。

    1.ActionForm的作用機(jī)理
          ActionForm本質(zhì)上是一種JavaBean,是專(zhuān)門(mén)用來(lái)傳遞數(shù)據(jù)的DTO(Data Transfer Object,數(shù)據(jù)傳遞對(duì)象)。它包括用于表單數(shù)據(jù)驗(yàn)證的validate()方法和用于數(shù)據(jù)復(fù)位的reset()方法。
          Struts框架利用ActionForm對(duì)象來(lái)臨時(shí)存放視圖頁(yè)面中的表單數(shù)據(jù)。例如一個(gè)登錄頁(yè)面會(huì)有一個(gè)用戶(hù)輸入框和一個(gè)密碼輸入框,以及用來(lái)提交登錄請(qǐng)求的按鈕。當(dāng)用戶(hù)提交登錄請(qǐng)求后,Struts將用戶(hù)名和密碼兩個(gè)輸入域的數(shù)據(jù)自動(dòng)填充到相應(yīng)的ActionForm對(duì)象中,然后控制層可以從該ActionForm對(duì)象中讀取用戶(hù)輸入的表單數(shù)據(jù),也可以把來(lái)自模型層的數(shù)據(jù)存放到ActionForm中,然后返回給視圖顯示。

          ActionForm有請(qǐng)求(request)和會(huì)話(session)兩種作用域(scope)。如果ActionForm的作用域設(shè)定為request,ActionForm實(shí)例將保存在request對(duì)象中,像其他保存在request對(duì)象中的屬性一樣,僅在當(dāng)前的請(qǐng)求/響應(yīng)范圍內(nèi)有效。如果ActionForm的作用域設(shè)定為session,那么ActionForm實(shí)例將被保存在session對(duì)象中,同一個(gè)ActionForm實(shí)例在整個(gè)HTTP會(huì)話中有效。


          當(dāng)驗(yàn)證ActionForm時(shí),如果檢測(cè)到一個(gè)或多個(gè)驗(yàn)證錯(cuò)誤,Struts框架會(huì)把錯(cuò)誤轉(zhuǎn)發(fā)回配置文件struts-config.xml中<action>元素的input屬性所指定的輸入頁(yè)面。

    2.ActionForm的使用方法

          (1)創(chuàng)建ActionForm
          可以通過(guò)擴(kuò)展Struts軟件包的ActionForm類(lèi),來(lái)創(chuàng)建具體的ActionForm。Struts軟件包中的ActionForm類(lèi)本身是一個(gè)抽象類(lèi),在擴(kuò)展該類(lèi)時(shí),為每一個(gè)要從HTML表單中捕獲的輸入域定義一個(gè)屬性,使表單輸入域與ActionForm的屬性一一對(duì)應(yīng),以使ActionForm能夠捕獲需要的表單輸入。定義了具體的屬性,就可以覆寫(xiě)validate()和reset()方法,來(lái)實(shí)現(xiàn)具體的ActionForm驗(yàn)證規(guī)則和初始化方法。

          (2)配置ActionForm
          每創(chuàng)建一個(gè)ActionForm類(lèi),就需要在Struts的配置文件struts-config.xml中配置這個(gè)類(lèi),例如:
       <form-beans>
          <form-bean name="loginActionForm" type="login.loginActionForm" />
       </form-beans>
          <form-beans>元素用來(lái)指定全體ActionForm的配置,一個(gè)Struts應(yīng)用所有的ActionForm的配置都要位于該元素標(biāo)記內(nèi)。<form-beans>元素的子元素<form-bean>用來(lái)配置一個(gè)具體的ActionForm類(lèi),每個(gè)<form-bean>元素對(duì)應(yīng)的內(nèi)容為一個(gè)form bean實(shí)例。一旦定義了<form-beans>元素,就可以在Action中使用它。

          (3)訪問(wèn)ActionForm
          ActionForm可以被JSP,Struts自定義標(biāo)記,Action或其他Web組件訪問(wèn)。訪問(wèn)ActionForm的一般方法如下:
          ·使用Struts HTML標(biāo)記庫(kù)
          Struts HTML標(biāo)記庫(kù)提供了一組和ActionForm密切關(guān)聯(lián)的標(biāo)記,這些標(biāo)記對(duì)應(yīng)到HTML表單域。如<html:form>標(biāo)記對(duì)應(yīng)HTML的<form>標(biāo)記,<html:text>標(biāo)記對(duì)應(yīng)HTML表單的text類(lèi)型<input>輸入域。這些標(biāo)記和ActionForm交互,以把ActionForm中的屬性值顯示出來(lái)。

          ·從request或session對(duì)象中取出ActionForm對(duì)象
          根據(jù)作用域的不同,Struts框架把ActionForm實(shí)例保存在request或session對(duì)象中,保存時(shí)采用的key值為<form-bean>元素的名字,即name屬性的值。因此,可以像取出任何存放在request或session對(duì)象中的屬性一樣取出ActionForm實(shí)例。例如:
          loginActionForm form=(loginActionForm)request.getAttribute("loginActionForm"); 

          ·在Action類(lèi)的execute()方法中直接訪問(wèn)ActionForm
          如果配置了ActionForm和Action映射,Struts框架就會(huì)把ActionForm作為參數(shù)傳遞給Action類(lèi)的execute()方法,在execute()方法中,可以直接讀取或設(shè)置ActionForm屬性。

    3.表單數(shù)據(jù)驗(yàn)證
          表單驗(yàn)證是ActionForm的主要功能之一,要實(shí)現(xiàn)這個(gè)功能,我們需要采取4個(gè)步驟:
          ·重寫(xiě)validate()方法。
          ·在資源文件ApplicationResources.properties中設(shè)置可能的驗(yàn)證錯(cuò)誤的標(biāo)識(shí)。
          ·要在配置文件struts-config.xml中,把<action>元素的validate屬性設(shè)置為true,并添加<message-resources>元素以指明資源文件的存放路徑。
          ·在相應(yīng)輸入頁(yè)面的相應(yīng)位置加如錯(cuò)誤標(biāo)記<html:errors>,以輸出可能的驗(yàn)證錯(cuò)誤。
          (1)重寫(xiě)validate()方法
          對(duì)該form bean的validatet()方法進(jìn)行重寫(xiě)。ActionErrors類(lèi)封裝了一組驗(yàn)證錯(cuò)誤,它的用法類(lèi)似Map類(lèi)。而ActionMessage類(lèi)封裝了單個(gè)驗(yàn)證錯(cuò)誤,它的構(gòu)造函數(shù)內(nèi)的參數(shù)就指向資源文件內(nèi)的一個(gè)錯(cuò)誤文本。例如語(yǔ)句“ActionMessage("login.password.error");”中的參數(shù)"login.password.error"其實(shí)就是資源文件ApplicationResources.properties中的一條錯(cuò)誤文本的鍵(key)。通過(guò)ActionErrors對(duì)象的add()方法,可以把ActionMessage對(duì)象加入到ActionErrors對(duì)象中。
          (2)設(shè)置資源文件
          在Struts的資源文件ApplicationResources.properties中設(shè)置可能的驗(yàn)證錯(cuò)誤的標(biāo)識(shí):
    #用戶(hù)名錯(cuò)誤
    error.username.required=<li>Please input your username again!</li>
    #密碼錯(cuò)誤
    error.password.required=<li>Please input your password again!</li>
          (3)修改配置文件struts-config.xml
          將配置文件struts-config.xml中<action>元素的validate屬性設(shè)定為true。此外,還需要增加<message-resource>元素,以指明資源文件的路徑。
          (4)在輸入頁(yè)面中加入錯(cuò)誤標(biāo)記
          表單數(shù)據(jù)驗(yàn)證的目的是,一旦用戶(hù)在輸入頁(yè)面表單中輸入的數(shù)據(jù)不符合要求或出現(xiàn)錯(cuò)誤,Struts驗(yàn)證機(jī)制將把驗(yàn)證錯(cuò)誤在該輸入頁(yè)面相應(yīng)的位置顯示出來(lái)。
          <html:errors>是Struts的一個(gè)自定義標(biāo)記。它能根據(jù)它的property屬性從資源文件ApplicationResources.properties中取出相應(yīng)的驗(yàn)證錯(cuò)誤,并在輸入頁(yè)面中指定的位置顯示驗(yàn)證錯(cuò)誤。

    主站蜘蛛池模板: 久久不见久久见免费影院www日本| 亚洲欧洲无码一区二区三区| 不卡一卡二卡三亚洲| 国产日产亚洲系列最新| 色屁屁在线观看视频免费| 国产精品成人免费观看| 亚洲第一网站免费视频| 免费看的黄色大片| 亚洲一区二区三区无码影院| 亚洲国产人成网站在线电影动漫| 亚洲欧洲无码一区二区三区| 成人免费无码大片A毛片抽搐色欲 成人免费无码大片a毛片 | 77777_亚洲午夜久久多人| 亚洲天然素人无码专区| 99在线免费观看| 日韩毛片无码永久免费看| 亚洲国产精品VA在线观看麻豆| 亚洲噜噜噜噜噜影院在线播放 | 亚洲成a人片77777老司机| 亚洲精品无码你懂的| 免费人成视频在线观看视频| 无码乱人伦一区二区亚洲| 足恋玩丝袜脚视频免费网站| 456亚洲人成在线播放网站| 国产成人免费视频| 亚洲精品无码久久久| 亚洲色大成WWW亚洲女子| 免费看少妇作爱视频| 一级特黄色毛片免费看| 永久免费视频v片www| jzzjzz免费观看大片免费| 亚洲人成网址在线观看| 日韩高清在线免费看| 在线观看免费视频一区| 亚洲一区中文字幕在线电影网| 久久国产精品免费观看| 亚洲男人天堂2022| 蜜桃视频在线观看免费网址入口| 亚洲日本在线观看| 日产乱码一卡二卡三免费| 视频免费在线观看|