1. struts2 的验证框架的分类
1.1 验证的分类:
1.1.1 根据验证的场所分:
客户端校验 在提交服务器前的效验,javascript的效验
服务端校验 在Action处理之前进行效验
1.1.2 在使用方式上分
使用覆盖validate方法校验
XML配置文件配置
Java Annotation配置
2. Struts 2 验证流程
Struts 2 执行步骤:
Struts 2 验证步骤:
3. 使用覆盖validate方法校验
ActionSupport实现了接口Validatable
通过重写 ActionSupport 类的 validate() 方法进行校验
如果某个Action类中有多个执行方法XXX,可以通过增加validateXXX()方法来实现验证
4. XML配置文件配置
Xml配置文件与Action的关系为:
SomeAction.java – SomeAction-validation.xml
5. Java Annotation配置
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
参考地址:
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 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制...
Struts2作为一款流行的Java Web开发框架,提供了一套强大的校验框架,使得开发者能够方便地对用户输入数据进行验证,确保数据的准确性和安全性。本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、...
struts2校验框架 struts2校验框架 struts2校验框架 struts2校验框架
struts2校验框架使用心得 希望对初学者有所帮助
在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...
struts2的验证框架的示例代码,快速学习和使用struts2验证框架
struts2 验证框架实例 掩饰了整个验证的过程 并讲解了一些网上没有说过的可能会遇到的错误
struts2验证框架的一些属性和框架验证的语法
source 博文链接:https://callan.iteye.com/blog/185577
Struts2验证框架的配置及validation.xml常用的验证规则
Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更强大。
下面将详细介绍Struts2自定义校验框架的相关知识点。 1. **Struts2验证框架概述** Struts2的验证框架主要负责处理用户提交的数据,进行验证,并在验证失败时显示错误消息。它支持两种验证方式:基于注解的验证...
2、用户名只能使用数字或者字母,长度为6~20之间; 3、密码、确认密码必须是数字和字母,长度为6~20之间; 4、密码、确认密码必须相同; 5、收入必须在0.001~10000.000之间; 6、年龄必须是整数且必须在0~120...
本学习笔记主要探讨了Struts2中的校验器(Validator)和校验框架,帮助开发者理解如何有效地实现数据验证,确保应用程序的健壮性。 首先,我们来看Struts2的校验框架。这个框架提供了强大的功能,可以对用户输入...
总的来说,Struts2的校验框架通过提供灵活的配置和易于扩展的机制,使得Web应用的输入验证变得简单而有效。它可以帮助开发者避免因用户输入不合法而导致的程序错误,提升应用的用户体验,同时增强系统的稳定性和安全...