首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Struts输入印证

2012-11-22 
Struts输入验证一. 手动输入完成校验1.普通的处理方式:只需要在action中重写validate()方法2.一个action对

Struts输入验证
        一. 手动输入完成校验
         1.普通的处理方式:只需要在action中重写validate()方法
         2.一个action对应多个逻辑处理方法:指定校验摸个特定方法的方式:
重写validateXxxx()方法。Eg:如果,只校验login方法,则只需重写validateLogin().

        二. 输入校验流程:
         1. 类型转换器负责对字符串的请求参数执行类型转换。并将这些值设置成Action的属性值。
         2. 转换过程中若出现异常,则将异常信息保存到ActionContext中,conversionError拦截器将其封装到fieldError中。
         3. 通过反射调用validateXxx()方法。
         4. 调用validate().
        5. 如果未出现异常,则转入用户请求的处理方法,如果出现异常,则转入inout视图所指定的视图资源(所以,对于验证的方法,必须要在配置文件中为其指定input)。
         三. 基于验证框架的输入校验
         1. 编写校验配置文件:命名规则:action类名-validatin.xml.
        2. 一个action对应多个逻辑处理方法:指定校验摸个特定方法的方式:
action类名-name属性名-validatin.xml.(name属性名:在strtus配置文件中的)
         3. 配置文件存放位置:放在与Action相同的文件夹内。
         4. 验证规则:先加载action类名-validatin.xml,然后加载action类名-name属性名-validatin.xml文件。
         5. 校验器的配置风格:两种:字段校验器,非字段校验器。
字段校验器配置格式:
<field name="被校验的字段">
       <field-validator type="校验器名">
             <!--此处需要为不同校验器指定数量不等的校验规则-->
              <param name="参数名">参数值</param>
                  ....................
               <!--校验失败后的提示信息,其中key指定国际化信息的key-->
                <message key="I18Nkey">校验失败后的提示信息</message>
                 <!--校验失败后的提示信息:建议用getText("I18Nkey"),否则可能出现Freemarker template Error-->
       </field-vallidator>
        <!-- 如果校验字段满足多个规则,下面可以配置多个校验器-->
</field>
非字段校验器配置格式:
<validator type="校验器名">
          <param name="fieldName">需要被校验的字段</param>
          <!--此处需要为不同校验器指定数量不等的校验规则-->        
<param name="参数名">参数值</param>
            <!--校验失败后的提示信息,其中key指定国际化信息的key-->
         <message key="I18Nkey">校验失败后的提示信息</message>
           <!--校验失败后的提示信息:建议用getText("I18Nkey"),否则可能出现Freemarker template Error-->
</validator>
非字段校验:先指定校验器:由谁来校验,来校验谁!
字段校验器:先指定校验的属性:我来校验谁,由谁来校验!

           6. 校验器:struts2提供了大量的内置校验器:你可以在xwork-core-2.1.6.jar的com.opensymphony.xwork2.validator.validators下找到如下配置文件:default.xml.里面列出了所有的内置校验器。

----------------------

struts2表单验证里field-validator type值:

int 整数;
double 实数;
date 日期;
expression  两数的关系比较;
email Email地址;
url
visitor
conversion
regex 正则表达式验证;
required 是否为空;
requiredstring 必须字符;
stringlength 输入字符长度限制;

url web地址

visitor 访问

conversion 转换

-------------------------

<validators>
<!—必填校验器 -->
<validator name="required" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>

   <field name="username">
     <field-validator type="requiredstring">
       <param name="trim">true</param>
       <message>username should not be empty !</message>
     </field-validator>
  
     <field-validator type="stringlength">
       <param name="minLength">6</param>
       <param name="maxLength">12</param>
       <message>username should be between ${minLength} and ${maxLength}!</message>
     </field-validator>
   </field>
  
   <field name="password">
     <field-validator type="requiredstring">
       <param name="trim">true</param>
       <message>password should not be empty !</message>
     </field-validator>
  
     <field-validator type="stringlength">
       <param name="minLength">6</param>
       <param name="maxLength">12</param>
       <message>password should be between ${minLength} and ${maxLength}!</message>
     </field-validator>
   </field>
      
</validators>

          每个<field.../>元素指定一个Action属性必须遵守的规则,该元素name属性指定了被校验的字段;如果该属性满足多个规则,则在该<field.../>下增多个<field-validator.../>。
            每个<field-validator .../>指定一个校验规则,该元素的type属性指定校验器名称该元素可以包含多个<param .../>子元素,用户指定该校验器的参数;除外,每个<field-validator .../>元素都有一个必须的<message .../>元素,用户确定校验失败后的提示信息。

             例子中只采用了"必填字符串校验器"和"字符串长度校验器"2个校验规则。

             struts2貌似共提供了13个校验器:
           required:必填校验器
             requiredstring:必填字符串校验器
             int:整数校验器
             double:双精度浮点数校验器
             date:日期校验器
             expression:表达式校验器
             fieldexpression:字段表达式校验器
             email:电子邮件校验器
             url:网址校验器
             visitor:Visitor校验器
             conversion:转换校验器
             stringlength:字符串长度校验器
             regex:正则表达式校验器

             用法大部分雷同,用到的时候可自己google搜索。


             配置文件校验肯定不输给编码校验的,自然也提供了对应于具体业务逻辑的校验规则文件的格式:

<Action类名-Action所包含的处理方法在struts.xml对应的name属性-validation.xml>

           例:

<!-- 配置一个名为user的Action,对应的逻辑方法为UserAction的login方法-->

<action name="login" method="login">
    <result name="input">/login.jsp</result>
    <result name="success">/index.jsp</result>
</action>

           则此逻辑方法对应的校验规则文件为:
UserAction-login-validation.xml

           与编码校验一样,校验错误信息会添加到系统的fieldError中,校验完毕后若FieldError不为空。则进入到input视图对应的JSP。在<fieldError/>处输出错误提示。
             提醒:没记错的话。与编码校验不同的是校验顺序,配置文件校验方式下,
先UserAction-validation.xml,再UserAction-login-validation.xml,

             因此若是只针login()逻辑进行输入校验的话,那UserAction-validation.xml没必要写了,或让其进行公共字段的校验

             2)客户端校验

             增加客户端校验非常简单,将输入页面的表单元素改为使用struts2标签来生成表单,并且为该表单增加validate="true"属性即可。








热点排行