欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
struts2 validate驗證

輸入校驗  


在struts2中,我們可以實(shí)現對action的所有方法進(jìn)行校驗或者對action的指定方法進(jìn)行校驗。


對于輸入校驗struts2提供了兩種實(shí)現方法:

1. 采用手工編寫(xiě)代碼實(shí)現。

2. 基于XML配置方式實(shí)現。


手工編寫(xiě)代碼實(shí)現對action中所有方法輸入校驗


通過(guò)重寫(xiě)validate() 方法實(shí)現, validate()方法會(huì )校驗action中所有與execute方法簽名相同的方法。當某個(gè)數據校驗失敗時(shí),我們應該調用addFieldError()方法往系統的fieldErrors添加校驗失敗信息(為了使用addFieldError()方法,action可以繼承ActionSupport ),如果系統的fieldErrors包含失敗信息,struts2會(huì )將請求轉發(fā)到名為input的result。在input視圖中可以通過(guò)<s:fielderror/>顯示失敗信息。

validate()使用例子:





  1. public void validate() {  
  2.        if(this.mobile==null || "".equals(this.mobile.trim())){  this.addFieldError("username""手機號不能為空");  
  3.         }else{  if(!Pattern.compile("^1[358]\\d{9}").matcher(this.mobile.trim()).matches()){  
  4.         this.addFieldError(“mobile", "手機號的格式不正確"); }  
  5.        }  
  6. }  




另一個(gè):





  1. public void validate() {  
  2.         List<String> args =  new ArrayList<String>();  
  3.         args.add("chrp");  
  4.         args.add("紅豆");  
  5.           
  6.         System.out.println(getText("wel",args));  
  7.         System.out.println(getText("wel"new String[]{"deep","朋友網(wǎng)!"}));  
  8.         System.out.println(getText("nameerror"));  
  9.         if ("".equals(name) || this.name == null) {  
  10.             addFieldError("name", getText("nameerror"));  
  11.         }  
  12.     }  




 


驗證失敗后,請求轉發(fā)至input視圖:

<result name="input">/WEB-INF/page/addUser.jsp</result>


在addUser.jsp頁(yè)面中使用<s:fielderror/>顯示失敗信息。


手工編寫(xiě)代碼實(shí)現對action指定方法輸入校驗


通過(guò)validateXxx()方法實(shí)現, validateXxx()只會(huì )校驗action中方法名為Xxx的方法。其中Xxx的第一個(gè)字母要大寫(xiě)。當某個(gè)數據校驗失敗時(shí),我們應該調用addFieldError()方法往系統的fieldErrors添加校驗失敗信息(為了使用addFieldError()方法,action可以繼承ActionSupport ),如果系統的fieldErrors包含失敗信息,struts2會(huì )將請求轉發(fā)到名為input的result。在input視圖中可以通過(guò)<s:fielderror/>顯示失敗信息。


validateXxx()方法使用例子:





  1. public String add() throws Exception{  return "success";}   
  2. public void validateAdd(){  
  3.           if(username==null && "".equals(username.trim()))  this.addFieldError("username""用戶(hù)名不能為空");  
  4. }  




 


驗證失敗后,請求轉發(fā)至input視圖:

<result name="input">/WEB-INF/page/addUser.jsp</result>


在addUser.jsp頁(yè)面中使用<s:fielderror/>顯示失敗信息。


輸入校驗的流程


1、類(lèi)型轉換器對請求參數執行類(lèi)型轉換,并把轉換后的值賦給action中的屬性。


2、如果在執行類(lèi)型轉換的過(guò)程中出現異常,系統會(huì )將異常信息保存到ActionContext,conversionError攔截器將異常信息添加到fieldErrors里。不管類(lèi)型轉換是否出現異常,都會(huì )進(jìn)入第3步。


3、系統通過(guò)反射技術(shù)先調用action中的validateXxx()方法,Xxx為方法名。

4、再調用action中的validate()方法。


5、經(jīng)過(guò)上面4步,如果系統中的fieldErrors存在錯誤信息(即存放錯誤信息的集合的size大于0),系統自動(dòng)將請求轉發(fā)至名稱(chēng)為input的視圖。如果系統中的fieldErrors沒(méi)有任何錯誤信息,系統將執行action中的處理方法。


基于XML配置方式實(shí)現對action的所有方法進(jìn)行輸入校驗


使用基于XML配置方式實(shí)現輸入校驗時(shí),Action也需要繼承ActionSupport,并且提供校驗文件,校驗文件和action類(lèi)放在同一個(gè)包下,文件的取名格式為:ActionClassName-validation.xml,其中ActionClassName為action的簡(jiǎn)單類(lèi)名,-validation為固定寫(xiě)法。如果Action類(lèi)為cn.csdn.UserAction,那么該文件的取名應為:UserAction-validation.xml。下面是校驗文件的模版:





  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">   
  3. <validators>  
  4.     <field name="username">  
  5.         <field-validator type="requiredstring">  
  6.             <param name="trim">true</param>  
  7.             <message>用戶(hù)名不能為空!</message>  
  8.         </field-validator>  
  9.     </field>  
  10. </validators>  




<field>指定action中要校驗的屬性,<field-validator>指定校驗器,上面指定的校驗器requiredstring是由系統提供的,系統提供了能滿(mǎn)足大部分驗證需求的校驗器,這些校驗器的定義可以在xwork-2.x.jar中的com.opensymphony.xwork2.validator.validators下的default.xml中找到。

<message>為校驗失敗后的提示信息,如果需要國際化,可以為message指定key屬性,key的值為資源文件中的key。

在這個(gè)校驗文件中,對action中字符串類(lèi)型的username屬性進(jìn)行驗證,首先要求調用trim()方法去掉空格,然后判斷用戶(hù)名是否為空。


struts2提供的校驗器列表


系統提供的校驗器如下:

required (必填校驗器,要求field的值不能為null)

requiredstring (必填字符串校驗器,要求field的值不能為null,并且長(cháng)度大于0,默認情況下會(huì )對字符串去前后空格)

stringlength(字符串長(cháng)度校驗器,要求field的值必須在指定的范圍內,否則校驗失敗,minLength參數指定最小長(cháng)度,maxLength參數指定最大長(cháng)度,trim參數指定校驗field之前是否去除字符串前后的空格)

regex(正則表達式校驗器,檢查被校驗的field是否匹配一個(gè)正則表達式.expression參數指定正則表達式,caseSensitive參數指定進(jìn)行正則表達式匹配時(shí),是否區分大小寫(xiě),默認值為true)

int(整數校驗器,要求field的整數值必須在指定范圍內,min指定最小值,max指定最大值)

double(雙精度浮點(diǎn)數校驗器,要求field的雙精度浮點(diǎn)數必須在指定范圍內,min指定最小值,max指定最大值)

fieldexpression(字段OGNL表達式校驗器,要求field滿(mǎn)足一個(gè)ognl表達式,expression參數指定ognl表達式,該邏輯表達式基于ValueStack進(jìn)行求值,返回true時(shí)校驗通過(guò),否則不通過(guò))

email(郵件地址校驗器,要求如果field的值非空,則必須是合法的郵件地址)

url(網(wǎng)址校驗器,要求如果field的值非空,則必須是合法的url地址)

date(日期校驗器,要求field的日期值必須在指定范圍內,min指定最小值,max指定最大值)

conversion(轉換校驗器,指定在類(lèi)型轉換失敗時(shí),提示的錯誤信息)

visitor(用于校驗action中的復合屬性,它指定一個(gè)校驗文件用于校驗復合屬性中的屬性)

expression(OGNL表達式校驗器,expression參數指定ognl表達式,該邏輯表達式基于ValueStack進(jìn)行求值,返回true時(shí)校驗通過(guò),否則不通過(guò),該校驗器不可用在字段校驗器風(fēng)格的配置中)


校驗器的使用例子





  1. required  必填校驗器  
  2. <field-validator type="required">  
  3.        <message>性別不能為空!</message>  
  4. </field-validator>  
  5.   
  6. requiredstring  必填字符串校驗器  
  7. <field-validator type="requiredstring">  
  8.        <param name="trim">true</param>  
  9.        <message>用戶(hù)名不能為空!</message>  
  10. </field-validator>  
  11.   
  12. stringlength:字符串長(cháng)度校驗器  
  13. <field-validator type="stringlength">  
  14.  <param name="maxLength">10</param>  
  15.  <param name="minLength">2</param>  
  16.  <param name="trim">true</param>  
  17.  <message><![CDATA[產(chǎn)品名稱(chēng)應在2-10個(gè)字符之間]]></message>  
  18. </field-validator>  




 





  1. email:郵件地址校驗器  
  2. <field-validator type="email">  
  3.     <message>電子郵件地址無(wú)效</message>  
  4. </field-validator>  
  5.   
  6. regex:正則表達式校驗器  
  7. <field-validator type="regex">  
  8.      <param name="expression"><![CDATA[^1[358]\d{9}$]]></param>  
  9.      <message>手機號格式不正確!</message>  
  10. </field-validator>  




 





  1. int:整數校驗器  
  2. <field-validator type="int">  
  3.     <param name="min">1</param>  
  4.     <param name="max">150</param>  
  5.     <message>年齡必須在1-150之間</message>  
  6. </field-validator>  
  7.   
  8. 字段OGNL表達式校驗器  
  9. <field name="imagefile">  
  10.     <field-validator type="fieldexpression">  
  11.         <param name="expression"><![CDATA[imagefile.length() <= 0]]></param>  
  12.         <message>文件不能為空</message>  
  13.     </field-validator>  
  14. </field>  




基于XML配置方式對指定action方法實(shí)現輸入校驗


當校驗文件的取名為ActionClassName-validation.xml時(shí),會(huì )對 action中的所有處理方法實(shí)施輸入驗證。如果你只需要對action中的某個(gè)action方法實(shí)施校驗,那么,校驗文件的取名應為:ActionClassName-ActionName-validation.xml,其中ActionName為struts.xml中action的名稱(chēng)。例如:在實(shí)際應用中,常有以下配置:

<action name="user_*" class="cn.csdn.action.UserAction" method="{1}“ >

 <result name="success">/WEB-INF/page/message.jsp</result>

 <result name="input">/WEB-INF/page/addUser.jsp</result>

</action>

UserAction中有以下兩個(gè)處理方法:

public String add() throws Exception{

   ....

}

public String update() throws Exception{

   ....

}

要對add()方法實(shí)施驗證,校驗文件的取名為: UserAction-user_add-validation.xml

要對update()方法實(shí)施驗證,校驗文件的取名為: UserAction-user_update-validation.xml


基于XML校驗的一些特點(diǎn)


當為某個(gè)action提供了ActionClassName-validation.xml和ActionClassName-ActionName-validation.xml兩種規則的校驗文件時(shí),系統按下面順序尋找校驗文件:

1。AconClassName-validation.xml

2。ActionClassName-ActionName-validation.xml

系統尋找到第一個(gè)校驗文件時(shí)還會(huì )繼續搜索后面的校驗文件,當搜索到所有校驗文件時(shí),會(huì )把校驗文件里的所有校驗規則匯總,然后全部應用于action方法的校驗。如果兩個(gè)校驗文件中指定的校驗規則沖突,則只使用后面文件中的校驗規則。


當action繼承了另一個(gè)action,父類(lèi)action的校驗文件會(huì )先被搜索到。


假設UserAction繼承BaseAction:

<action name="user" class="cn.csdn.action.UserAction" method="{1}">

</action>


訪(fǎng)問(wèn)上面action,系統先搜索父類(lèi)的校驗文件:BaseAction-validation.xml, BaseAction-user-validation.xml,接著(zhù)搜索子類(lèi)的校驗文件: UserAction-validation.xml, UserAction-user-validation.xml。應用于上面action的校驗規則為這四個(gè)文件的總和。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Struts2――表單驗證
struts2 validation.xml 驗證
struts2中validation校驗框架的原理和使用
2.8.1 Struts2 的驗證
struts2在學(xué)習(十)
由spring管理struts的Action實(shí)例
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久