日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Struts第4天

 liuyang_inf 2014-08-26

前天學習了struts的編程式驗證,今天學習struts內(nèi)置的配置式的驗證方式,那么,為什么要用這種方式來驗證呢?

其實,我們會發(fā)現(xiàn)struts的編碼方式驗證呢會有一些缺點,第一就是不夠靈活,第二是將驗證和驗證規(guī)則耦合在一起了,還違反了開閉原則,當我們使用了struts的validate驗證框架的時候會發(fā)現(xiàn)使用起來靈活的多,如果添加新的屬性,只需要增加配置文件的屬性驗證就行了。

Validate驗證框架

首先,我們需要做一些準備工作:

Validator框架依賴包:

  1)jakarta-oro.jar:文本處理類,文本的替換,分割和過濾

  2)commons-validator.jar:包含一些通用的驗證規(guī)則

需要的配置文件:

  1)validator-rules.xml:包含通用驗證規(guī)則

  2)validation.xml:針對具體Struts應用驗證規(guī)則

了解validator-rules.xml:

  1)name:驗證規(guī)則名稱

  2)classname:處理類的權限類型

  3)method:實現(xiàn)驗證規(guī)則方法

  3)methodParams:實現(xiàn)驗證規(guī)則方法的參數(shù)列表

  4)msg:消息資源文件的key

  5)depends:依賴驗證規(guī)則  

使用validate驗證框架的步驟:

1.先在struts-config.xml文件里面加入插件信息

2.修改formbean的繼承為ValidatorForm

3.編寫validator.xml,它的驗證規(guī)則跟validator-rules.xml的dtd是一樣的

4.編寫國際化資源文件

5.最后在頁面上顯示錯誤信息

好了,我們現(xiàn)在按照這種步驟來做!

第一步,先在struts-config.xml里面加入插件信息,示例代碼:

  1. <struts-config>  
  2.   <data-sources />  
  3.   <form-beans>  
  4.     <form-bean name="login" type="com.lovo.form.LoginForm"></form-bean>    
  5.   </form-beans>  
  6.   <global-exceptions />  
  7.   <global-forwards />  
  8.   <action-mappings>  
  9.     <action path="/login" type="com.lovo.action.LoginAction" name="login" validate="true" input="/login.jsp">  
  10.         <forward name="success" path="/index.jsp"></forward>  
  11.         <forward name="error" path="/login.jsp"></forward>  
  12.     </action>  
  13.   </action-mappings>  
  14.   <message-resources parameter="com.lovo.struts.ApplicationResources" />  
  15.    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">  
  16.         <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>  
  17.    </plug-in>  
  18. </struts-config>  

第二步,這里必須將插件信息加在mappings后面,還有action的validate屬性必須配置哦!input當然也要了!這樣才會去調(diào)用驗證框架。然后呢,修改formbean對象繼承為ValidatorForm這類,示例:

  1. public class LoginForm extends ValidatorForm {   
  2.     private String name;   
  3.     private String pwd;   
  4.   正如你看到的,這個類里面沒有validate方法,但是系統(tǒng)還是會去調(diào)用驗證框架的。

第三步,編寫varlidator.xml文件,這個文件因為是在加入插件的時候就已經(jīng)把名字給定義了,所以,這里我們還是以validator.xml這個文件為例,它呢,保存在WEB-INF下面的,因為它的dtd跟varlidator-rules.xml這個dtd是一樣的,所以就直接拷貝了??词纠?!

 

  1. <!DOCTYPE form-validation PUBLIC   
  2.           "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"   
  3.           "http://jakarta./commons/dtds/validator_1_1_3.dtd">  
  4.   
  5. <form-validation>  
  6.     <formset>  
  7.         <form name="login"><!-- 要驗證的formbean的name,這里跟struts-config.xml里面的formbean的name一致 -->  
  8.         <!-- property是指要驗證的具體屬性名,這里跟formbean里面的屬性名一致   
  9.            depends是指驗證規(guī)則具體參考validator-rules.xml里面的name對應這里對非空和最小值和最大值做了驗證,多個驗證規(guī)則用,號隔開,   
  10.          -->  
  11.             <field property="name" depends="required,minlength,maxlength">  
  12.                 <arg0 key="login.name"/><!-- 這里是指第0個占位符(形參)的key是login.name,根據(jù)這個會去資源文件里面找login.name所對應的value值,然后將其填充到占位符中 -->  
  13.                 <arg1 key="${var:minlength}" resource="false"/><!-- 這里key是指第2個形參的的值對應下面var的name值,首先resource=false是指將不會去資源文件里面找形參了,而會在當前文件里面找,這里我們會配置一個var的屬性來確定第二個形參的值 -->  
  14.                 <arg2 key="${var:maxlength}" resource="false"/>  
  15.                 <var>  
  16.                     <var-name>minlength</var-name><!-- 這里的var-name是指validator-rules.xml的name -->  
  17.                     <var-value>2</var-value><!-- 形參的值 -->  
  18.                 </var>  
  19.                 <var>  
  20.                     <var-name>maxlength</var-name>  
  21.                     <var-value>10</var-value>  
  22.                 </var>  
  23.             </field>  
  24.         </form>  
  25.         </formset>  
  26.         </form-validation>  

具體的地方都加了注釋,這里不再詳說。

第四步,編寫國際化資源文件,剛剛在varlidator.xml里面多次提到了國際化文件,那么這個文件到底有什么作用呢?大家可以跟我來看看哈!Come ON!

errors.required={0}\u4E0D\u80FD\u4E3A\u7A7A\uFF01
errors.minlength={0}\u6700\u5C0F\u4E3A\u6570{1}
errors.maxlength={0}\u6700\u5927\u4F4D\u6570{2}

login.name=\u7528\u6237\u540D
login.pwd=\u5BC6\u7801

這里呢,errors.required這個key值其實是varlidator-rules.xml里面的msg對應,后面的value值是指要顯示的錯誤信息,{0}是指validator.xml里面的arg第幾個如果是arg0,就是{0},這樣來填充占位符,其實,這里我們也可以把這里的{0}想成我們在學JDBC的時候,里面的preparedstatments里面的填充?號的值,其實是一個道理。

最后的login.name是指要填充的具體內(nèi)容,它跟varlidator.xml里面的arg幾的具體參數(shù)為準,一般都是resource="true"的時候才來這里面讀取,因為這里我是使用utf-8的格式,所以看起來有點看不懂,其實就是中文。

第五步,顯示錯誤信息,示例代碼:

顯示錯誤信息,跟前天的顯示是一樣的,具體請參看前天的博客內(nèi)容,這里稍微提下,就是html-errors里面的property的值為validator.xml里面的field的name值,也就是屬性名!

 最后是struts的標簽庫,個人認為這個東西用的不多,但是還是要掌握!

struts-html主要替換原來的html標簽

struts-bean 主要是用于輸出國際化資源文件,重要的是writer和 message還有一點就是創(chuàng)建和復制define

struts-logic主要用于邏輯判斷控制流程Internet 和 equal 循環(huán)和比較

struts-tiles 主要是為了創(chuàng)建網(wǎng)頁模板感覺用處不大

好了先總結到此!

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多