亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Struts2學習筆記(九)——數據校驗

2019-11-15 00:55:29
字體:
來源:轉載
供稿:網友
Struts2學習筆記(九)——數據校驗

Struts2的數據校驗屬于服務器端校驗,Struts2 支持校驗方式 :

  • 手動校驗(代碼校驗) :在服務器端通過編寫java代碼,完成數據校驗
  • 自動校驗(配置校驗) :xml配置校驗(主流) 和 注解配置校驗

1、手動校驗

1)Struts2的手動校驗步驟:

  • 首先要從頁面中獲取對應的標簽name屬性的值,在動作類action中聲明同名的屬性,提供get和set方法;
  • 要繼承ActionSupport類或者實現Validateable接口;
  • 重寫Validateable接口的validate()方法,需要通過addFieldError(fieldName, errorMessage)方法來添加校驗提示,fieldName為錯誤提示字段,errorMessage為錯誤提示信息,在jsp頁面需要通過Struts2的<s:fielderror/>標簽來提示添加的信息,該標簽有個name屬性,值為addFieldError方法中的fieldName,當添加了校驗信息,Struts2框架會返回到name值為"input"的<result/>設置的視圖中;

2)下面我們通過一個例子來演示手動校驗功能:

Action類:

 1 public class ValidateAction extends ActionSupport { 2     PRivate String name; 3      4     @Override 5     public void validate() { 6         if (name == null || "".equals(name)) { 7             this.addFieldError("name", "姓名不能為空"); 8         } 9     }10     11     @Override12     public String execute() throws Exception {13         return SUCCESS;14     }15     16     public String getName() {17         return name;18     }19     20     public void setName(String name) {21         this.name = name;22     }23 }

struts.xml配置文件:

 1 <struts> 2     <constant name="struts.devMode" value="true" /> 3      4     <package name="default" namespace="/" extends="struts-default"> 5         <action name="validateAction" class="com.sunny.action.ValidateAction"> 6             <result>/success.jsp</result> 7             <!--Struts2的校驗信息會返回到name值為input的視圖中--> 8             <result name="input">/input.jsp</result> 9         </action>10     </package>11 12 </struts>

jsp頁面:

1 <body>2  <s:fielderror name="name"/>3  <form action="${pageContext.servletContext.contextPath}/validateAction.action">4     姓名:<input type="text" name="name"><br>5     <input type="submit" value="提交">6  </form>7 </body>

當第一次加載jsp頁面時不會顯示校驗信息:

當在表單中不添加任何信息直接點擊提交按鈕時會顯示設置的校驗信息:

2、自動校驗(XML配置文件方式)

1)XML配置文件方式數據校驗步驟:

  • 首先要從頁面中獲取對應的標簽name屬性的值,在動作類action中聲明同名的屬性,提供get和set方法;
  • 創建一個XML格式驗證文件,文件的命名方式:ActionClassName-validation.xml,ActionClassName指的是Action類的名稱,該文件需要和Action類放在同一目錄下;
    • XML格式驗證文件的內容格式:
       1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE validators PUBLIC 3           "-//Apache Struts//XWork Validator 1.0.3//EN" 4           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> 5 <!--validators根元素--> 6 <validators> 7     <!--field:指定action中要校驗的屬性 8             name:指定將被驗證的表單字段的名字 9      -->10     <field name="name">11         <!--field-validator:指定驗證規則12                 type:指定驗證規則的名稱13          -->14         <field-validator type="requiredstring">15             <!--param:向驗證器傳遞的參數,name值為校驗器的參數名 -->16             <param name="trim">true</param>17             <!--message:驗證失敗時,提示的錯誤信息18                 里面的文本:錯誤提示信息19              -->20             <message>用戶名不能為空</message>21         </field-validator>22     </field>23 </validators>

    • Struts2的內置校驗器規則在路徑:xwork-core-x.x.x.jar中com.opensymphony.xwork2.validator.validators包的default.xml文件:

       1 <validators> 2     <!--validator:聲明驗證規則 3             name:驗證規則的名稱 4             class:驗證規則對應的類的完整路徑 5      --> 6     <!--required:必填校驗器,要求被校驗的屬性值不能為null-->  7     <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/> 8     <!--requiredstring:必填字符串校驗器,要求被校驗的屬性值不能為null,并且長度大于0,默認情況下會對字符串去前后空格 9             參數trim:該參數為可選參數,用于指定是否在校驗之前對字符串進行整理。10     -->11     <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>12     <!--int:整數校驗器,要求field的整數值必須在指定范圍內13             參數min:指定字段值的最小值,該參數為可選14             參數max:指定字段值的最大值,該參數為可選15     -->16     <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>17     <!--long:整數校驗器,要求field的整數值必須在指定范圍內18             參數min:指定字段值的最小值,該參數為可選19             參數max:指定字段值的最大值,該參數為可選20     -->21     <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>22     <!--short:整數校驗器,要求field的整數值必須在指定范圍內23             參數min:指定字段值的最小值,該參數為可選24             參數max:指定字段值的最大值,該參數為可選    25     -->26     <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>27     <!--double:雙精度浮點數校驗器,要求field的雙精度浮點數必須在指定范圍內28             參數minInclusive:指定字段數值所接受的最小值,該參數為可選29             參數maxInclusive:指定字段數值所接受的最大值,該參數為可選30             參數minExclusive:指定字段數值被排除的最小值,該參數為可選31             參數maxExclusive:指定字段數值被排除的最大值,該參數為可選32     -->33     <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>34     <!--date:日期校驗器,要求field的日期值必須在指定范圍內35             參數min:指定字段日期值的最小值,該參數為可選36             參數max:指定字段日期值的最大值,該參數為可選37     -->38     <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>39     <!--expression:表達式校驗器,它是一個非字段校驗器,當參數expression計算的值為true時,校驗通過,否則返回提示.40             參數expression:該參數為一個邏輯表達式,該參數使用OGNL表達式,并基于值棧計算,返回一個Boolean類型值。 41     -->42     <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>43     <!--fieldexpression:字段表達式校驗器,當參數expression計算的值為true時,校驗通過,否則返回提示.44             參數expression:該參數為一個邏輯表達式,該參數使用OGNL表達式,并基于值棧計算,返回一個Boolean類型值.45     -->46     <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>47     <!--email:郵件地址校驗器,要求如果被校驗的屬性值非空,則必須是合法的郵件地址-->48     <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>49     <!--url:網址校驗器,要求如果被校驗的屬性值非空,則必須是合法的url地址-->50     <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>51     <!--visitor復合類型校驗器,該校驗器用來校驗Action中定義的復合類型屬性,支持簡單的復合類型或數組類型或集合類型.52             參數context:校驗器引用的上下文,可以隨意取,可選參數53             參數appendPrefix:是否為字段校驗信息加前綴(message中設置的值),可選參數54     -->55     <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>56     <!--conversion:類型轉換校驗器,該校驗器檢查是否存在轉換異常57             參數repopulateField:指定當類型轉換失敗后返回input頁面時,類型轉換失敗的表單是否保留原來的錯誤輸入,true為保留,false為不保留.58     -->59     <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>60     <!--stringlength:字符串長度校驗器,用于檢驗字段中字符串長度是否在指定的范圍61             參數trim:該參數為可選參數,用于指定是否在校驗之前對字符串進行整理。62             參數maxLength:用于指定最大字符串長度,該參數為可選63             參數minLength:用于指定最小字符串長度,該參數為可選64     -->65     <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>66     <!--regex:正則表達式校驗器,檢查被校驗的屬性值是否匹配一個正則表達式.67             參數expression:指定正則表達式68             參數caseSensitive:指定進行正則表達式匹配時,是否區分大小寫,默認值為true,為可選參數.69     -->70     <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>71     <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>72 </validators>

2)下面我們通過一個例子來演示XML配置文件方式數據校驗功能:

Action類:

 1 public class ValidateAction extends ActionSupport { 2     private String name; 3      4     @Override 5     public String execute() throws Exception { 6         return SUCCESS; 7     } 8      9     public String getName() {10         return name;11     }12     13     public void setName(String name) {14         this.name = name;15     }16 }

struts2配置文件:

 1 <struts> 2     <constant name="struts.devMode" value="true" /> 3      4     <package name="default" namespace="/" extends="struts-default"> 5         <action name="validateAction" class="com.sunny.action.ValidateAction"> 6             <result>/success.jsp</result> 7             <!--Struts2的校驗信息會返回到name值為input的視圖中--> 8             <result name="input">/input.jsp</result> 9         </action>10     </package>11 12 </struts>

在Action類相同目錄下新建XML格式驗證文件:ValidateAction-validation.xml:

1 <validators>2     <field name="name">3         <field-validator type="requiredstring">4             <param name="trim">true</param>5             <message>姓名不能為空</message>6         </field-validator>7     </field>8 </validators>

jsp頁面:

1 <body>2  <s:fielderror name="name"/>3  <form action="${pageContext.servletContext.contextPath}/validateAction.action">4     姓名:<input type="text" name="name"><br>5     <input type="submit" value="提交">6  </form>7 </body>

當第一次加載jsp頁面時不會顯示校驗信息:

當在表單中不添加任何信息直接點擊提交按鈕時會顯示設置的校驗信息:

如果要對指定方法進行驗證的話,XML驗證文件的命名方式:ActionClassName-ActionName-validation.xml,ActionName對應的是struts.xml文件對應的action標簽的name屬性的值。

3)visitor驗證規則示例

vsitor校驗器主要用于校驗Action里的復合類型、數組類型或者集合類型,如一個Action里面包含了Person類型的屬性,需要驗證Person類型的name屬性不能為空。

1)新建Person類:

 1 public class Person { 2     private String name; 3  4     public String getName() { 5         return name; 6     } 7  8     public void setName(String name) { 9         this.name = name;10     }11     12 }

2)新建Action類:

 1 public class ValidateAction extends ActionSupport { 2     private Person person; 3      4     @Override 5     public String execute() throws Exception { 6         return SUCCESS; 7     } 8  9     public Person getPerson() {10         return person;11     }12 13     public void setPerson(Person person) {14         this.person = person;15     }16     17 }

3)新建visitor驗證規則文件,該文件需要和Action類在同一目錄下,命名規則和上面講的一樣ActionClassName-validation.xml,這里為ValidateAction-validation.xml:

 1 <validators> 2     <field name="person"> 3         <field-validator type="visitor"> 4             <param name="context">test</param> 5             <param name="appendPrefix">true</param> 6             <!--指定校驗失敗的提示信息前綴--> 7             <message>錯誤:</message> 8         </field-validator> 9     </field>10 </validators>

4)新建Person類的name屬性驗證規則文件,該文件需要和Person類在同一目錄下,命名規則為ClassName-context值-validation.xml,ClassName為要驗證的類,context值為<paramname="context">test</param>中的內容,-validation為固定內容,這里的文件名為Person-test-validation.xml:

1 <validators>2     <field name="name">3         <field-validator type="requiredstring">4             <param name="trim">true</param>5             <message>姓名不能為空</message>6         </field-validator>7     </field>8 </validators>

5)新建jsp頁面:

1 <body>2  <s:fielderror name="name"/>3  <form action="${pageContext.servletContext.contextPath}/validateAction.action">4     姓名:<input type="text" name="person.name"><br>5     <input type="submit" value="提交">6  </form>7 </body>

當第一次加載jsp頁面時不會顯示校驗信息:

當在表單中不添加任何信息直接點擊提交按鈕時會顯示設置的校驗信息:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品日本美女福利在线观看| 午夜精品久久久久久久久久久久| 亚洲国产精品va| 97热在线精品视频在线观看| 日韩毛片在线观看| 欧美日韩亚洲精品内裤| 亚洲第一色在线| 成人av在线天堂| 久久影院资源网| 精品国产依人香蕉在线精品| 在线免费观看羞羞视频一区二区| 97久久精品视频| 日韩免费观看视频| 欧美日韩ab片| 久久久精品一区| 九九久久精品一区| 欧美日韩一区二区在线| 都市激情亚洲色图| www.日韩不卡电影av| 亚洲日本中文字幕免费在线不卡| 日韩电影中文字幕av| 日韩精品一区二区视频| 国内精品美女av在线播放| 国产精品视频专区| 日韩av成人在线| 黑人精品xxx一区| 亚洲天堂网站在线观看视频| 国产在线一区二区三区| 欧美在线免费视频| 欧美性少妇18aaaa视频| 精品日本高清在线播放| 国产成人av网址| 国产精品麻豆va在线播放| 国产精品国产三级国产专播精品人| 久久久久久亚洲精品中文字幕| 国产成人精品在线播放| 精品中文字幕在线2019| 国产精品久久久久久久久久久不卡| 韩国国内大量揄拍精品视频| 亚洲国产精品电影在线观看| 欧美大荫蒂xxx| 亚洲精品视频免费| 亚洲国产欧美在线成人app| 自拍视频国产精品| 在线观看91久久久久久| 日韩av在线免费观看| 国产亚洲欧洲黄色| 精品久久久国产精品999| 亚洲欧美在线x视频| 欧美性xxxx| 久久久久久久国产精品| 亚洲色图国产精品| 日韩久久精品电影| 日韩免费av片在线观看| 性夜试看影院91社区| 91免费综合在线| 日韩在线观看免费全集电视剧网站| www国产亚洲精品久久网站| 国产精品男人的天堂| 亚洲一区二区在线| www国产亚洲精品久久网站| 国产aⅴ夜夜欢一区二区三区| 亚洲视频999| 日本国产高清不卡| 欧美大片免费观看| 亚洲精品有码在线| 精品毛片网大全| 欧美日韩亚洲精品一区二区三区| 日韩欧美国产中文字幕| 国产精品中文字幕久久久| 日本免费在线精品| 久久久久久香蕉网| 成人国产精品免费视频| 国产精品日韩一区| 97人人模人人爽人人喊中文字| 亚洲精品免费在线视频| 亚洲 日韩 国产第一| 亚洲欧美中文在线视频| 亚洲国产女人aaa毛片在线| 亚洲人成电影网站色…| 欧美激情精品久久久久久大尺度| 日韩经典第一页| 色噜噜狠狠狠综合曰曰曰| 精品毛片三在线观看| 久久久999国产| 黑人与娇小精品av专区| 国产精品丝袜久久久久久不卡| 久久精品电影一区二区| 精品国产精品自拍| 91嫩草在线视频| 国产精品一区av| 国产香蕉一区二区三区在线视频| 国产精品18久久久久久首页狼| 国产欧美在线观看| 国外日韩电影在线观看| 欧美麻豆久久久久久中文| 日韩中文字幕在线免费观看| 成人美女av在线直播| 国产在线播放不卡| 91国产精品91| 国内久久久精品| 91在线观看免费观看| 国产精品一区二区三区久久| 51久久精品夜色国产麻豆| 国产精品色视频| 欧美猛交免费看| 日韩www在线| 在线观看欧美视频| 亚洲在线www| 国产www精品| 8090理伦午夜在线电影| 97国产精品视频人人做人人爱| 日韩免费观看视频| 欧美激情奇米色| 日本久久久久久| 欧美极品在线播放| 国精产品一区一区三区有限在线| 欧美性高潮床叫视频| 97国产在线观看| 欧美午夜www高清视频| 亚洲国产精品美女| 久久人人爽亚洲精品天堂| 国产日韩欧美视频| 91亚洲永久免费精品| 日本精品免费一区二区三区| 777国产偷窥盗摄精品视频| 亚洲精品白浆高清久久久久久| 2023亚洲男人天堂| 亚洲高清色综合| 亚洲视频在线观看视频| 国产色婷婷国产综合在线理论片a| 亚洲人成在线一二| 国产999精品久久久影片官网| 欧美另类老肥妇| 亚洲欧美在线免费观看| 久久精品国产99国产精品澳门| 亚洲精品成人久久电影| 成人午夜小视频| 亚洲wwwav| 91久久久国产精品| 精品中文字幕久久久久久| 深夜精品寂寞黄网站在线观看| 中文字幕综合一区| 欧美精品制服第一页| 久久色精品视频| 久久国产精品影片| 欧美激情区在线播放| 日韩精品中文字幕有码专区| 亚洲国模精品私拍| 成人在线一区二区| 亚洲国产日韩一区| 96精品久久久久中文字幕| 成人免费网站在线看| 欧美高清在线播放| 亚洲天堂av女优| 成人h片在线播放免费网站| 国内偷自视频区视频综合| 国产日韩综合一区二区性色av| 久久视频在线视频| 精品久久久久久亚洲国产300| 国产精品久久久久久av福利软件| 日韩在线激情视频| 国内精品400部情侣激情| 亚洲图片在线综合|