`

struts2 验证框架

 
阅读更多

 


1. struts2 的验证框架的分类
     1.1 验证的分类:
           1.1.1 根据验证的场所分:
                    客户端校验 在提交服务器前的效验,javascript的效验
                    服务端校验 在Action处理之前进行效验
              1.1.2 在使用方式上分
                         使用覆盖validate方法校验
     XML配置文件配置
     Java Annotation配置

2. Struts 2 验证流程
          Struts 2 执行步骤:
               
          Struts 2 验证步骤:
               
    1. 类型转换器负责对字符串的请求参数执行类型转换,并将这些值设置成 Action 的属性值
    2. 在执行类型转换过程中可能出现异常,如果出现异常,将异常信息保存到 ActionContext 中,
          conversionError 拦截器负责将其封装到 fieldError 里,然后执行第 3 步;如果转换过程没有异常信息,则直接进入第 3 步。
    3. 调用 Struts 2 内置的输入校验规则进行输入校验 (也就是根据各种 *validation.xml 文件里定义的校验进行输入校验)
    4.  通过反 射调用 validateXxx() 方法,其中 Xxx 是即将处理用户请求的处理逻辑所对应的方法名。
    5. 调用 Action 类里的 validate() 方法
    6. 如果经过上面 5 步 都没有出现 FieldError ,将调用 Action 里处理用户请求的处理方法;
          如果出现了 FieldError,系统将转入 input 逻辑视图所指定的视图资源。
    

3. 使用覆盖validate方法校验
     ActionSupport实现了接口Validatable
     通过重写 ActionSupport 类的 validate() 方法进行校验
     如果某个Action类中有多个执行方法XXX,可以通过增加validateXXX()方法来实现验证
    

4. XML配置文件配置
     Xml配置文件与Action的关系为:
          SomeAction.java – SomeAction-validation.xml
且与SomeAction.class处在相同的目录中。

在使用params传值的情况适合该验证。

在使用modeldriver传值的时候,可以采用visitor效验器
Visitor 校验器主要用于校验 Action 里的复合属性。
例如:一个 SomeActionAction 里包含了 User 类型的属性,该校验器需要配置属性的validation.xml
eg:
     SomeAction-validation.xml
     User-validation.xml
缺点:
     多个xml文件,难于管理


5. Java Annotation配置
     5.1 拦截器配置
          <interceptor-ref name="validation">
               <param name="excludeMethods">input,back,cancel,browse</param>
               <param name="validateAnnotatedMethodOnly">true</param>
          </interceptor-ref>
 
     5.2 对于Action方法的效验方式
          eg:
          @Validations(
        requiredStrings = {
            @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "model.name", message = "产品名称是必须的."),
        }
    )
public String save(){        
        return SUCCESS;
}
备注:如果该action中其它方法不需要验证需要在方法上面加入:@SkipValidation 忽略验证
          eg:
               @SkipValidation
     public String toAdd(){
        return SUCCESS;
     }                    
          如果需要使用国际化只需在@RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "model.name", key= "name.key")其它都遵循i18n的处理方式
     5.3 velocity模板展示提示信息方式
          采用s标签:
          输出所有的提示信息
          #sfielderror()
          输出字段model.name的提示信息
          #sfielderror("fieldName=model.name")
          
     5.4 自定义效验
          5.4.1 主要依赖于CustomValidator
          
          5.4.2 基本的使用:
               5.4.2.1 定义验证类型
                    eg:
                    package com.jd.vc.webapp.utils.validators;

import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
/**
* Date: 13-2-20
* Time: 上午9:55
* To change this template use File | Settings | File Templates.
*/
public class NumberFieldValidator extends FieldValidatorSupport {
    public void validate(Object object) throws ValidationException {
        String fieldName = getFieldName();
        Object value = this.getFieldValue(fieldName, object);
        if (!(value instanceof String)) {
            return;
        }
        String str = ((String) value).trim();
        if (str.length() == 0) {
            return;
        }
        try {
            Double.parseDouble(str);
        } catch (NumberFormatException nfe) {
            addFieldError(fieldName, object);
            return;
        }
        try {
            Integer.parseInt(str);
        } catch (NumberFormatException nfe) {
            addFieldError(fieldName, object);
            return;
        }
    }
}
               
     5.4.2.2 加入验证框架
          加入validators.xml
          eg:
          <!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
<validators>
    <validator name="numericField" class="com.jd.vc.webapp.utils.validators.NumberFieldValidator"/>
</validators>

     5.4.2.3 Action验证使用
          eg:
               @Validations(
        customValidators = {
            @CustomValidator(type ="numericField", fieldName = "model.weight", message = "请输入数字类型.")
        }
    )
     public String save(){        
          return SUCCESS;
     }
 
     5.4.2.4 velocity展示提示信息
          eg:
               输出字段model.weight的提示信息
                         #sfielderror("fieldName=model.weight")
 
参考地址:
annotation验证:
     http://www.tutorialspoint.com/struts_2/struts_annotations_types.htm
 

 

分享到:
评论

相关推荐

    struts2验证框架

    Struts2 验证框架详解 Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制...

    Struts2校验框架应用

    Struts2作为一款流行的Java Web开发框架,提供了一套强大的校验框架,使得开发者能够方便地对用户输入数据进行验证,确保数据的准确性和安全性。本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、...

    struts2校验框架使用心得.txt

    其中,Struts2提供的校验框架是其核心特性之一,能够有效地进行表单验证,并且支持多种验证方式。 #### 二、配置Struts2框架 为了使用Struts2框架,首先需要在项目的`web.xml`文件中配置过滤器。下面的示例展示了...

    struts2验证框架示例

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

    struts2校验框架

    ### Struts2校验框架详解 #### 一、概述 Struts2作为一款流行的Java Web应用框架,提供了丰富的功能来支持开发人员构建高效且可维护的应用程序。其中,Struts2校验框架(Validation Framework)是该框架的核心特性...

    struts2验证框架简单示例

    在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...

    struts2验证框架简单实例

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

    struts2 校验框架

    Struts2的校验框架基于Apache Commons Validator,提供了多种预定义的验证器类型以及自定义验证器的功能。这些验证器可以在配置文件中或代码中定义,用于检查表单字段的有效性。 #### 三、示例分析 ##### 1. 配置...

    [原]Struts2校验框架

    在Struts2中,校验框架是一个核心组件,它负责处理用户输入的数据验证,确保数据的正确性和完整性。以下是对Struts2校验框架的详细讲解。 1. **Struts2验证框架的基本概念** Struts2的验证框架主要负责在用户提交...

    Struts2 验证框架

    验证框架是Struts2中的一个重要组成部分,用于处理用户输入的数据验证。在这个框架中,验证逻辑与业务逻辑分离,使得代码更易于管理和扩展。 在Struts2验证框架中,主要有两种验证方式:客户端验证和服务器端验证。...

    struts2验证框架的使用和扩展

    在Struts2中,验证框架是其核心特性之一,它负责确保用户输入的数据符合预定义的规则,从而保证数据的准确性和安全性。本文将深入探讨Struts2验证框架的使用和扩展。 1. **Struts2验证框架基础** - **Action与...

    Struts2自定义校验框架

    下面将详细介绍Struts2自定义校验框架的相关知识点。 1. **Struts2验证框架概述** Struts2的验证框架主要负责处理用户提交的数据,进行验证,并在验证失败时显示错误消息。它支持两种验证方式:基于注解的验证...

    使用Struts2校验框架完成输入校验

    2、用户名只能使用数字或者字母,长度为6~20之间; 3、密码、确认密码必须是数字和字母,长度为6~20之间; 4、密码、确认密码必须相同; 5、收入必须在0.001~10000.000之间; 6、年龄必须是整数且必须在0~120...

Global site tag (gtag.js) - Google Analytics