`
chilongxph
  • 浏览: 135418 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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类名-validation.xml.
2. 一个action对应多个逻辑处理方法:指定校验摸个特定方法的方式:
action类名-name属性名-validation.xml.(name属性名:在strtus配置文件中的)
3. 配置文件存放位置:放在与Action相同的文件夹内。
4. 验证规则:先加载action类名-validation.xml,然后加载action类名-name属性名-validation.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.里面列出了所有的内置校验器。

<validators>
<!—必填校验器 -->
<validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
<!—必填字符串校验器-->
<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
<!-- 整数校验器 -->
<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
<!-- -->
    <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
    <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
<validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
<!-- 日期校验器 -->
<validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
<!--  表达式校验器 -->
<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
<!--  字段表达式校验器 -->
<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
<!--  邮件校验器 -->
<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
<!--  网址校验器 -->
    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
<!--  转换器校验器 -->
<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
<!--  字符串长度校验器 -->
<validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
<!--  正则表达式校验器 -->
    <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
    <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
</validators>
这些校验器已经可以满足大多数的验证需求,如果还需要特殊的要求,建议直接采用java代码搞定,除非你有很多地方都要用到,此时你可以自定义一个校验器。

四. 校验器的执行顺序
1. 所有非字段校验风格的校验器优先于字段校验风格的校验器;
2. 所有非字段校验风格的校验器中,排在前面的会先执行;
3. 所有字段校验风格的校验器,排在前面的会先执行;



五. 校验器的短路原则
1. 所有非字段检验器时最优先执行的,如果某个非字段校验器校验失败了,则该字段上的所有字段校验器都不会获得校验机会;
2. 非字段校验校验失败,不会阻止其他非字段校验执行;
3. 如果一个字段校验器校验失败后,则该字段下且排在该校验失败后的检验器之后的其他字段校验器不会获得校验机会;
4. 字段校验器永远不会阻止非字段校验器的执行!

六. 短路校验器

短路校验器:只需在<validator>或<filed-validator>元素中添加short-circuit=”true”属性。
注:在struts2.1.6版本,已经支持客户端的短路校验。
七. 客户端的校验:
在<s:form>中添加validate=”true”.
分享到:
评论
1 楼 i523853827 2011-09-16  
楼主你好,文章里面有错误,希望楼主能改正 验证的xml 是类名+validation 不是validatin 。

相关推荐

    Struts2框架学习总结【自用】【原创】【详细】

    个人struts2框架学习后的梳理和总结,内容丰富,从配置文件到action类、result、ognl、类型转换器、国际化、拦截器、表单验证等等内容,还推荐了很多博客链接,有了它自学Struts2框架毫无压力!

    Struts2 校验框架学习笔记

    Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更强大。

    struts2验证框架示例

    struts2的验证框架的示例代码,快速学习和使用struts2验证框架

    struts7验证框架 struts7验证框架

    struts7验证框架 struts7验证框架 我们学习时候用的 还是很全面 的

    Struts验证框架与一些技巧

    通过一个简单的例子让你学习到Struts验证框架与一些技巧

    Struts框架

    struts2框架的输入校验与校验框架,这都是上课的总结笔记

    Struts2框架源码

    适合新手学习struts2,使用myeclipse9开发,源码包含拦截器、验证等演示代码。

    struts2 校验框架

    个人学习过程中 关于校验框架 的总结 希望跟大家分享下

    STRUTS 2完全学习手册.pdf

    《Struts 2完全学习手册》全面讲述Struts 2开发框架的知识,包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验、Struts 2强大的标签库、Struts 2中文件的上传与下载、Struts 2对...

    struts2数据校验框架学习

    NULL 博文链接:https://code.iteye.com/blog/279065

    Struts2的validate验证框架

    这个validate验证框架中的actiionerror级别的错误的验证提示,并包含了如何在一个Action中处理多个业务逻辑,(struts1.x 中的DispatcheAction),例子比较简单,希望对大家学习struts有所帮助。

    struts2学习笔记(1)

    1. struts2框架的引入 1)把struts2的相关jar包导入到项目中去 2)把struts2框架的配置文件struts.xml复制粘贴...话可以在struts2框架的核心jar包中找到.jar中有验证 struts.xml的dtd文件,在dtd文件中有这个声明的写法

    Struts+Spring+Hibernate完整增删改查的例子(用struts验证框架验证)

    用于三大框架实现增删改查的整合,适合初学者用于学习

    struts1学习的一个登录验证的例子

    struts1框架学习的一个登录验证的例子,适合初学者的学习参考。

    struts2校验器与校验框架精彩学习笔记

    自己写的学习笔记, 绝对真实可靠,内容很充实,而且突出重点,

    struts项目学习笔记

    Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型 由传统Struts1和WebWork两个经典框架发展而来 Struts2框架=Struts2+XWork Strust2 核心功能 允许POJO(Plain Old Java Objects,简单javabean对象,没有继承,...

    struts1深入学习

    struts1学习资料:里面包含struts源码工程 ActionServlet DispatchAction Action LookUpDispatchAction的用法 还包含html logic bean tiles标签的详细使用方法和validate验证框架的具体案例

    struts_注册验证_Validator框架

    用struts Validator框架实现注册验证 (本人花了2个星期才弄明白,其中有不少现成代码可直接用于项目,比如common包。为了体现开源精神,特意奉献。供向我这样的初学者学习。)

    本人自己开发的Struts框架 可以自动填充属性 及验证跳转

    本人自己开发的Struts框架 可以自动填充属性 及验证跳转 ,唯一没做的是文件上传,简单易懂 值得学习

    Struts验证框架

    上传的资料都是非常经典的,这也是我学习过程中的心得,希望大家能给我指点,也希望大家多上传资料共同学习。千万不要传空文件夹。。。

Global site tag (gtag.js) - Google Analytics