`
chilongxph
  • 浏览: 138800 次
  • 性别: 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的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。

    Spring和Struts框架学习总结

    ### Spring和Struts框架学习总结 #### 一、Spring框架简介与核心概念 Spring框架是一个开源的Java平台,主要用于简化企业级应用的开发工作。它提供了全面的基础架构支持,包括依赖注入(DI)、面向切面编程(AOP)...

    struts验证框架的实例

    Struts验证框架是Java开发中一个非常重要的工具,主要用于处理Web应用中的用户输入验证。它提供了模型驱动的数据验证机制,...这个实例提供了学习和实践Struts验证框架的机会,对于提升Java Web开发技能非常有帮助。

    struts 验证框架 demo

    验证框架是Struts的一个重要组成部分,它负责在用户输入数据时进行校验,确保数据的准确性和完整性,防止无效或恶意的数据进入系统。 Struts的验证框架通常与ActionForm类一起使用,ActionForm是模型层的一个组件,...

    struts2验证框架简单实例

    在Struts2框架中,验证框架是其一个重要组成部分,用于确保输入数据的准确性和完整性,从而防止因无效数据导致的程序异常或错误。本实例将带你深入理解Struts2验证框架的使用,以及在实际操作中可能遇到的问题和解决...

    struts验证框架实例

    通过学习这个实例,开发者不仅可以掌握Struts验证框架的基本用法,还能了解到如何在实际项目中灵活运用验证规则,提高代码的可维护性和应用的安全性。同时,对于理解和调试复杂的Web应用程序,这个实例也提供了宝贵...

    Struts2框架学习jar包

    这个"Struts2框架学习jar包"包含了所有必要的组件,使得开发者能够快速上手并深入理解Struts2的工作原理和特性。 1. **MVC架构**:Struts2的核心是MVC模式,它将业务逻辑(Model)、用户界面(View)和控制流程...

    struts2框架2016版资料day01

    5. **拦截器**:拦截器是Struts2的一大特色,它允许开发者在Action调用前后插入自定义逻辑,比如日志记录、权限验证、数据校验等。在day01的课程中,你可能会学习如何定义和使用拦截器,以及如何在配置文件中配置...

    struts验证框架之例题

    Struts验证框架是Java Web开发中的一个重要组成部分,主要用于在用户提交数据到服务器之前进行校验,确保输入的数据符合预设的规则和格式,从而避免无效数据导致的错误或潜在的安全风险。在这个“struts验证框架之...

    Struts2框架学习

    ### Struts2框架基础知识 #### 一、Struts2框架简介 Struts2是一个用于JavaEE的开源Web应用框架,它基于MVC设计模式构建,主要用于简化Web应用程序的开发过程。Struts2作为Struts1的继承者,在设计思想和技术上有了...

    Struts2框架源码

    此压缩包文件包含的是Struts2的源码,特别适合初学者研究和学习,其中涵盖了拦截器和验证等关键组件的实现。 首先,我们来深入了解Struts2的核心概念: 1. **Action类**:在Struts2中,业务逻辑通常由Action类执行...

    struts2验证框架示例

    在Struts2中,验证框架是其核心特性之一,它允许开发者对用户输入的数据进行校验,确保数据的完整性和安全性。这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下...

    Struts2.0框架书籍

    Interceptor则扮演了处理请求前和处理请求后工作的重要角色,如日志记录、权限验证等,它是Struts2.0的一大特色,极大地增强了框架的灵活性和可扩展性。 本书除了提供基础理论知识外,还强调了实战案例。通过代码...

    Hibernate+struts2框架

    例如,当用户提交登录表单时,Struts2会调用LoginAction的execute方法,该方法负责校验用户输入并根据验证结果返回不同的结果视图,如登录成功跳转到主页面,失败则返回错误提示页面。 管理员和普通用户的区分可能...

    struts2框架JAR包

    在那个时期,Struts2已经整合了WebWork框架的核心功能,引入了Action、Result和Interceptor等概念,提供了强大的表单验证和国际化支持。这个版本的Struts2引入了OGNL(Object-Graph Navigation Language)表达式语言...

    struts框架及校验框架详解

    Struts框架是Java Web开发中的一个关键组件,它属于Java EE(J2EE)平台的一部分,主要用于构建...通过深入学习"struts框架及校验框架详解"文档,开发者能更有效地利用Struts来创建高效、稳定且易于维护的Web应用程序。

    Struts2自定义校验框架

    Struts2提供了内置的验证框架,允许开发者自定义校验规则,以满足特定业务需求。下面将详细介绍Struts2自定义校验框架的相关知识点。 1. **Struts2验证框架概述** Struts2的验证框架主要负责处理用户提交的数据,...

    struts1框架环境搭建视频(登录小例子)

    虽然现在Struts2等更新的框架更为流行,但学习Struts1可以帮助你理解MVC模式,为学习其他框架打下基础。通过这个登录小例子,你可以深入理解Struts1的配置、Action、Form Bean以及页面跳转等核心概念。

Global site tag (gtag.js) - Google Analytics