Terry.Li-彬

          虛其心,可解天下之問(wèn);專(zhuān)其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 0 Trackbacks
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(19)

          隨筆分類(lèi)(107)

          隨筆檔案(141)

          文章分類(lèi)(284)

          文章檔案(342)

          相冊(cè)

          收藏夾(58)

          家裝

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          用登陸演示Model-Driven(模型驅(qū)動(dòng))、配置表單驗(yàn)證
          本文主要在上一個(gè)視頻(webwork初體驗(yàn))的基本進(jìn)行改動(dòng),所以在看本文之前,請(qǐng)先瀏覽上一個(gè)視頻。
          webworkAction根據(jù)Form的不同可分為二類(lèi):
          一種是Field-Driven(字段驅(qū)動(dòng))Action;就是 Action用自己的字段來(lái)充當(dāng)Form的角色,上一個(gè)視頻給大家演示的例子就是采用了這種方式。本人感覺(jué)有點(diǎn)像struts中的動(dòng)態(tài)Form
          當(dāng)然這只是我自己的一些看法。還有一種是Model-Driven(模型驅(qū)動(dòng))Action。它很像StrutsForm,但在strutsForm必須繼承org.apache.struts.action.ActionForm;或是org.apache.struts.validator包下的幾個(gè)Form.WebWork中有所不同,只要普通JavaBean就可以充當(dāng)模型部分。只要我們?cè)?/span>Action中實(shí)現(xiàn)com.opensymphony.xwork. ModelDriven接口就可以了,它有一個(gè)方法:Object getModel();,這個(gè)方法用于返回模型對(duì)象。
          我們改動(dòng)上個(gè)視頻的LoginAction類(lèi)。代碼如下:
          java 代碼
          1. package com.lyx.web.action;   
          2. import com.lyx.bo.User;   
          3. import com.opensymphony.xwork.Action;   
          4. import com.opensymphony.xwork.ActionSupport;   
          5. import com.opensymphony.xwork.ModelDriven;   
          6. public class LoginAction implements Action,ModelDriven {   
          7. //注意這里的User一定要初始化   
          8.     private User user=new User();   
          9.   
          10.     public User getUser() {   
          11.         return user;   
          12.     }   
          13.     public String execute() throws Exception {   
          14.         if(user.getUserName().equals("lyx")){   
          15.             return this.SUCCESS;   
          16.         }else{   
          17.             return this.ERROR;   
          18.         }   
          19.     }   
          20.     public Object getModel() {   
          21.         // TODO Auto-generated method stub   
          22.         return user;   
          23.     }   
          24.   
          25. }  
          紅色字體部是我們后加部分。
          然后我們就可以將index.jsp頁(yè)面的代碼修改如下:
          <form action="login.action">
           
          username:<input type="text" name="userName"/>
          password:<input type="password" name="userPwd"/>
          <input type="submit" value="login"/>
          form>
          也就是我們?nèi)サ袅嗽械谋磉_(dá)式語(yǔ)言。
          然后我們修改xwork.xml配置文件如下:
          xml 代碼
          1. <!--CTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"</sp-->>  
          2. <xwork>  
          3.     <include file="webwork-default.xml" />  
          4.     <package name="default" extends="webwork-default">  
          5.         <action name="login" class="com.lyx.web.action.LoginAction">  
          6.             <!--  登錄成功后跳轉(zhuǎn)到 /success.jsp 頁(yè)面 -->  
          7.             <result name="success" type="dispatcher">  
          8.                 <param name="location">/success.jspparam>  
          9.             result>  
          10.             <!--  登錄失敗后跳轉(zhuǎn)到 /error.jsp 頁(yè)面 -->  
          11.             <result name="error" type="dispatcher">  
          12.                 <param name="location">/error.jspparam>  
          13.             result>  
          14.             <interceptor-ref name="model-driven"/>  
          15.             <interceptor-ref name="params"/>  
          16.         action>  
          17.     package>  
          18. xwork>  
          也就是在原有的基礎(chǔ)上加了一行模型驅(qū)動(dòng)的攔截器。作用就是將模型對(duì)象保存到值堆棧中。
          就樣就OK了。這里要注意,model-driven攔截器要在params的上面。可以測(cè)試一下看看。
          整過(guò)過(guò)程,非常像struts中,Action與ActionForm的關(guān)系。
          通過(guò)測(cè)試,功能和以前的一樣。很簡(jiǎn)單吧。就不在多述了。
          第二個(gè)重點(diǎn)我們來(lái)配置一個(gè)表單的驗(yàn)證:
          在 src 目錄下新建 validators.xml 文件,文件內(nèi)容如下:
          xml 代碼
          1. <validators>  
          2.     <validator name="required" class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>  
          3.     <validator name="requiredstring" class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>  
          4.     <validator name="int" class="com.opensymphony.xwork.validator.validators.IntRangeFieldValidator"/>  
          5.     <validator name="date" class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/>  
          6.     <validator name="expression" class="com.opensymphony.xwork.validator.validators.ExpressionValidator"/>  
          7.     <validator name="fieldexpression" class="com.opensymphony.xwork.validator.validators.FieldExpressionValidator"/>  
          8.     <validator name="email" class="com.opensymphony.xwork.validator.validators.EmailValidator"/>  
          9.     <validator name="url" class="com.opensymphony.xwork.validator.validators.URLValidator"/>  
          10.     <validator name="visitor" class="com.opensymphony.xwork.validator.validators.VisitorFieldValidator"/>  
          11.     <validator name="conversion" class="com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator"/>  
          12.     <validator name="stringlength" class="com.opensymphony.xwork.validator.validators.StringLengthFieldValidator"/>  
          13. validators>  
          這個(gè)文件可以在網(wǎng)上下得到。也可以在webwork的源碼中得到。不是不想起了struts中有個(gè)valiator-rules.xml文件。這個(gè)文件在struts中是描述著驗(yàn)證的規(guī)則,里面有好多已經(jīng)寫(xiě)好了的驗(yàn)證,我們可以很方便的調(diào)用。這里的這個(gè)文件功能和struts中的類(lèi)似。
             要啟動(dòng)表單驗(yàn)證需要增加一個(gè)攔截器還有就是我們?cè)?/span>strutsstruts-config.xml配置文件中Action的配置有個(gè)input屬性,它是用來(lái)當(dāng)驗(yàn)證失敗時(shí)所在跳到的頁(yè),在這里如果登陸失敗我們應(yīng)該跳到index頁(yè),顯示失敗的原因,重新登陸。在webwork中我們也用input來(lái)描述這個(gè)功能。在一個(gè)result.
          對(duì)xwork.xml 文件進(jìn)行修改增加<interceptor-ref name="validationWorkflowStack" />
          修改后xwork.xml代碼如下:
          xml 代碼
          1. <include file="webwork-default.xml" />  
          2.     <package name="default" extends="webwork-default">  
          3.         <action name="login" class="com.lyx.web.action.LoginAction">  
          4.             <!--  登錄成功后跳轉(zhuǎn)到 /success.jsp 頁(yè)面 -->  
          5.             <result name="success" type="dispatcher">  
          6.                 <param name="location">/success.jspparam>  
          7.             result>  
          8.             <!--  登錄失敗后跳轉(zhuǎn)到 /error.jsp 頁(yè)面 -->  
          9.             <result name="error" type="dispatcher">  
          10.                 <param name="location">/error.jspparam>  
          11.             result>  
          12.             <result name="input" type="dispatcher">  
          13.                 <param name="location">/index.jspparam>  
          14.             result>  
          15.                
          16.             <interceptor-ref name="model-driven"/>  
          17.             <interceptor-ref name="params"/>  
          18.             <interceptor-ref name="validationWorkflowStack" />  
          19.         action>  
          20.     package>  
          我們已經(jīng)用到了success,他指成功所要跳到的頁(yè)。Error是錯(cuò)誤所要跳到的頁(yè)。Input是指失敗時(shí)所要返回來(lái)登陸的頁(yè)。在webwork中還有幾個(gè)。以后我們會(huì)看得到,用到的時(shí)候在詳細(xì)講解。
             建立驗(yàn)證規(guī)則
           
                對(duì) LoginAction 進(jìn)行驗(yàn)證規(guī)則的配置需要新建一個(gè)配置文件文件名起名是以Action 的名稱(chēng)開(kāi)頭以validation結(jié)尾,中間用-隔開(kāi).xml并保存到 LoginAction.java 文件所在的目錄中
                  
             代碼如下: LoginAction-validation.xml
          xml 代碼
          1. <!--CTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd"</sp-->>  
          2. <validators>  
          3.     <field name="userName">  
          4.         <field-validator type="requiredstring">  
          5.             <message>username is required!message>  
          6.         field-validator>  
          7.     field>  
          8.     <field name="userPwd">  
          9.         <field-validator type="requiredstring">  
          10.             <message> password is required!message>  
          11.         field-validator>  
          12.     field>  
          13. validators>  
          這個(gè)文件很像struts中的validation.xml。功能和他是一樣的。配置表單的驗(yàn)證。這里我們只驗(yàn)證也用戶(hù)名和密碼為必須填寫(xiě)。注意:這個(gè)name的屬性一定要和User類(lèi)中的對(duì)應(yīng)。規(guī)則是和struts中一樣的。對(duì)應(yīng)才能有交的驗(yàn)證。
          為了能顯示驗(yàn)證的信息再次修改index頁(yè)面如下:
          <ww:form action="login.action" method="POST">
                   username:   <ww:textfield label="Username" name="userName" required="true"/>
                    password: <ww:password label="Password" name="userPwd" required="true"/>
                      <ww:submit value="Submit"/>
               ww:form>
          這幾行很簡(jiǎn)單,從字面上就可以看出,就不在多述了。
          基本代碼就這些,測(cè)試一下,看看吧。
          哦,沒(méi)有驗(yàn)證,還忘了一步,回頭看看
          除了上述的配置外,我們的Action還要繼承ActionSupport類(lèi),這個(gè)類(lèi)存放著錯(cuò)誤的信息,并能將錯(cuò)誤的狀態(tài)返回到頁(yè)面
          在改一下,試試
          OK了。好用了。呵呵,剛是太急用了,忘了最關(guān)鍵的一步。大家在開(kāi)發(fā)當(dāng)中可以細(xì)心點(diǎn)啊。
          因?yàn)椋涍@個(gè)視頻是在公司,不能有聲音講解給大家聽(tīng)。請(qǐng)大家諒解。這段時(shí)間比較忙,過(guò)了這段時(shí)間,給大家錄個(gè)有聲音的。呵呵。
          我的聯(lián)系方式:
          MSN;Lyx_2709@hotmail.com
          Email:Lyx_happy@163.com
          就到這里吧。希望大家能多提寶貴意見(jiàn)!
          webwork模型驅(qū)動(dòng)與表單驗(yàn)證.part1.rar
           描述:  第一部分視頻
          下載
           文件名:  webwork模型驅(qū)動(dòng)與表單驗(yàn)證.part1.rar
           文件大小:  3 M
           下載過(guò)的:  文件被下載或查看 1277 次
          webwork模型驅(qū)動(dòng)與表單驗(yàn)證.part2.rar
           描述:  第二部分視頻
          下載
           文件名:  webwork模型驅(qū)動(dòng)與表單驗(yàn)證.part2.rar
           文件大小:  3 M
           下載過(guò)的:  文件被下載或查看 1101 次
          webworkfirst.rar
           描述:  程序源碼
          下載
           文件名:  webworkfirst.rar
           文件大小:  8 KB
           下載過(guò)的:  文件被下載或查看 350 次
          posted on 2007-09-22 21:03 禮物 閱讀(967) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java
          主站蜘蛛池模板: 海原县| 吐鲁番市| 桐柏县| 余江县| 新野县| 社会| 资兴市| 高清| 弋阳县| 德保县| 辽宁省| 南江县| 浪卡子县| 香港| 孟州市| 岳阳县| 雷州市| 昭平县| 金乡县| 高州市| 将乐县| 晋城| 石门县| 海宁市| 行唐县| 大关县| 遵义市| 丰台区| 西乡县| 湛江市| 临潭县| 井冈山市| 梁河县| 溧水县| 天峻县| 务川| 邳州市| 金乡县| 广饶县| 桂阳县| 三门峡市|