麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

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頁面時不會顯示校驗信息:

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜视频色 | 国产欧美在线观看不卡一 | 免费h片 | 日本aaaa片毛片免费观看视频 | 蜜桃久久一区二区三区 | 国产午夜探花 | 99热1| 成年人在线免费播放视频 | 成人店女老板视频在线看 | 国产1区2区在线 | 久草资源在线观看 | 欧美高清第一页 | 看黄在线 | 亚洲国产精品一 | 亚洲精品免费播放 | 在线看成人av | 国产精品久久久麻豆 | 性少妇videosexfreexx入片 | 91av网址| 日本欧美一区二区三区视频麻豆 | 亚洲精中文字幕二区三区 | 天天夜夜草 | 国产精品片一区二区三区 | 毛片免费大全短视频 | 日韩视频一区二区 | 第四色成人网 | 精品一区在线视频 | 久久久婷婷一区二区三区不卡 | 欧美黑人xx| 久久久久久艹 | 国产精品久久久久一区二区 | 美女视频黄a视频免费全过程 | 国产午夜亚洲精品理论片大丰影院 | 91av日韩 | 免费看成人av | 国产色片在线观看 | 免费观看一级黄色片 | h视频免费观看 | 国产精品久久久久久久久久久久久久久 | 搜一级毛片 | 黄色av网站在线观看 |