Struts2XML验证

来源:互联网 发布:otdr曲线图制作软件 编辑:程序博客网 时间:2024/06/10 15:23

基于XML配置方式实现输入校验



1、建立Jsp页面,定义需求

     * 用户名不能为null ,""

     * 密码不能为null, "" 并且密码的长度6-12之间

2、定义Action

    要继承ActionSupport或者实现Validateable接口:

3、配置struts_validate.xml文件

       验证出错转向的页面

                struts.xml配置<resultname=“input”>/validate/loginxml.jsp</result>  

                其中input转向是在action中已经定义好的.


4、配置验证的xml文件

    * 验证的xml文件的规范在xwork-core-2.3.1.1.jar包下的:xwork-validator-1.0.3.dtd

    验证文件的命名

              *   在这个校验文件中,对action中字符串类型的username属性进行验证,

                  首先要求调用trim()方法去掉空格,然后判断用户名是否为空。

             *    该文件需要和action类放在同一个包下,文件的取名应遵守

                   ActionClassName-validation.xml规则,其中ActionClassNameaction

                   的简单类名,-validation为固定写法。

             *     例如:如果Action类为cn.itcast.validate.ValidateXmlAction.那么该文件

                   的取名应为:ValidateXmlAction-validation.xml

            *      ValidateXmlAction-validation.xml为文件的配置如下

   




基于XML配置方式对指定action方法实现输入校验

当校验文件的取名为ActionClassName-validation.xml时,会对 action中的所有处理方法实施输入验证。
如果你只需要对
action中的某个action方法实施校验那么,校验文件的取名应为:ActionClassName-ActionName-validation.xml其中ActionNamestruts.xmlaction的名称。例如:在实际应用中,常有以下配置:

<actionname="user_*" class="cn.itcast.action.UserAction" method="{1}">

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

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

</action>

UserAction中有以下两个处理方法:

publicString add() throws Exception{

   ....

}

publicString update() throws Exception{

   ....

}

要对add()方法实施验证,校验文件的取名为: UserAction-user_add-validation.xml

要对update()方法实施验证,校验文件的取名为: UserAction-user_update-validation.xml

Struts2 内建的验证程序

required: 确保某给定字段的值不是空值null

requiredstring: 确保某给定字段的值既不是空值null, 也不是空白.

trim 参数.默认为true, 表示struts 在验证该字段值之前先剔除前后空格.

stringlength: 验证一个非空的字段值是不是有足够的长度.

minLength: 相关字段的最小长度.若没有给出这个参数, 该字段将没有最小长度限制

maxLength:相关字段的最大长度.若没有给出这个参数, 该字段将没有最大长度限制

trim: 在验证之前是否去除前后空格

int:检查给定字段的值是否可以被转换为一个整数

min: 相关字段的最小值.若没给出这个参数, 该字段将没有最小值限制

max: 相关字段的最大值.若没给出这个参数, 该字段将没有最大值限制


date: 确保某给定日期字段的值落在一个给定的范围内

max:相关字段的最大值.若没给出这个参数, 该字段将没有最大值限制

min:相关字段的最小值.若没给出这个参数, 该字段将没有最小值限制

email: 检查给定String值是否是一个合法的email

url: 检查给定String值是否是一个合法的url

regex: 检查某给定字段的值是否与一个给定的正则表达式模式相匹配.

expresssion*: 用来匹配的正则表达式

caseSensitive: 是否区分字母的大小写. 默认为true

trim: 是否去除前后空格.默认为true

conversion(转换校验器,指定在类型转换失败时,提示的错误信息)

visitor(用于校验action中的复合属性,它指定一个校验文件用于校验复合属性中的属性)

expression(OGNL表达式校验器,expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过,该校验器不可用在字段校验器风格的配置中)

double(双精度浮点数校验器,要求field的双精度浮点数必须在指定范围内,min指定最小值,max指定最大值)




required 必填校验器

<field-validatortype="required">

       <message>性别不能为空!</message>

</field-validator>

requiredstring 必填字符串校验器

<field-validatortype="requiredstring">

       <param name="trim">true</param>

       <message>用户名不能为空!</message>

</field-validator>

stringlength字符串长度校验器

<field-validatortype="stringlength">

  <param name="maxLength">10</param>

  <param name="minLength">2</param>

  <param name="trim">true</param>

  <message><![CDATA[产品名称应在2-10个字符之间]]></message>

</field-validator>

int:整数校验器

<field-validatortype="int">

  <param name="min">1</param>

  <param name="max">150</param>

  <message>年龄必须在1-150之间</message>

</field-validator>

字段OGNL表达式校验器

<fieldname="imagefile">

  <field-validator type="fieldexpression">

  <paramname="expression"><![CDATA[imagefile.length() <= 0]]></param>

  <message>文件不能为空</message>

  </field-validator>

</field>

email:邮件地址校验器

<field-validatortype="email">

  <message>电子邮件地址无效</message>

</field-validator>

regex:正则表达式校验器

<field-validatortype="regex">

     <paramname="expression"><![CDATA[^13\d{9}$]]></param>

     <message>手机号格式不正确!</message>

</field-validator>

基于XML校验的一些特点


当为某个action提供了ActionClassName-validation.xmlActionClassName-ActionName-validation.xml两种规则的校验文件时,系统按下面顺序寻找校验文件:

1。AconClassName-validation.xml

2。ActionClassName-ActionName-validation.xml

系统寻找到第一个校验文件时还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有校验规则汇总,然后全部应用于处理方法的校验。如果两个校验文件中指定的校验规则冲突,则只使用后面文件中的校验规则。

action继承了另一个action,父类action的校验文件会先被搜索到。假设UserAction继承BaseActionUserActionstruts.xml的配置如下:

<actionname="user" class="cn.itcast.action.UserAction" method="{1}">

  .....

</action>

访问上面名为useraction,系统先搜索到BaseAction-validation.xml BaseAction-user-validation.xml,接着搜索到UserAction-validation.xml UserAction-user-validation.xml。校验规则是这四个文件的总和。

总结

   
struts2框架验证(xml方式):
    * 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法
    
    * 创建一个xml格式验证文件:
        * 命名方式:ActionClassName-validation.xml,ActionClassName指的是动作类action的名称
        * <validators>标签:根元素
        * field:指定action中要校验的属性,实际上就是页面中表单的name属性的值
            * name:指定页面中表单的name属性的值
        * field-validator:指定验证规则
            * type:指定验证规则名称,
                    struts2框架提供的验证规则放在xwork-core-xxx.jar
                    下的com\opensymphony\xwork2\validator\validators
                    的default.xml配置文件。
        * param:向底层的验证规则传递的参数
        * message:验证失败时,提供的错误提示信息
    
    * 如果要对指定方法进行验证的话:
        * xml验证文件的命名方式:ActionClassName-ActionName-validation.xml,
                                ActionName对应的是struts.xml文件对应的action标签的name属性的值
    
    
   

0 0