struts 验证框架

http://blog.java-cn.com/user1/5423/archives/2006/34972.html

1. 使用Struts validator 验证表单数据

关于Struts validator的文章网上有很多篇,个人认为比较全面的一篇是 《truts Validator验证器使用指南》。在我的这个项目中采用DynaValidatorForm进行验证。服务器端验证方式。

DynaValidatorForm在运行时会自动对提交的表单进行封装,根据配置文件进行某些输入数据进行自定义的验证。

2. 用一个用户注册来学习具体操作

页面表单有三个输入字段,1.用户名称,2.用户密码,3.确认用户密码。采用struts 标签。和资源文件显示。

输入要求为:

用户名称字数只能是3到20,用正则表达匹配包括下划线的任何单词字符。

确认用户密码、用户密码字数只能是6到50,任何字符,且两次输入密码相同。

a).用eclipse新建一个WEB项目。在myeclipse中添加struts。新建一个Form Action & jsp,向struts中添加validator验证器插件,添加三个form properties分别是用户名称,用户密码,确认用户密码。

原文件如下:




b). 打开struts的配置文件struts-config.xml文件,会发现其的内容为(这些内容是eclipse自动添加进去):注意有颜色字

org.apache.struts.validator.DynaValidatorForm">动态验证和自动封装Form,这里还有其他几种选择,也可自己写FormBean。

attribute="registerForm"

input="/register.jsp"

name="registerForm" 对应的FormBean的名称。

path="/register"

scope="request"

type="com.iceyb.struts.action.RegisterAction">处理Action的类。

ApplicationResources" /> 采用资源文件,资源文件放在/WEB-INF/class下面。路径可以自己定义。

以下是validator插件

c). 做完了以上的工作后,重点进行validator的配置。主要是两个文件validator-rules.xml ,validation.xml。在validation.xml中的验证器调用validator-rules.xml的规则来验证数据。

d). validation.xml, validator-rules.xml怎样协同工作的呢?主要是通过validation.xml中的的depends来决定调用validator-rules.xml哪条规则来验证。

e).在这里要自定义一条规则来验证两次输入的数据是否相同类。在validator-rules.xml中随便找一条规则,再在Struts源码包中找到对应的类。如:org.apache.struts.validator.FieldChecks

f).根据org.apache.struts.validator.FieldChecks类写一个自己的类StrutsValidator,在该类中定义一个方法validateTwoFields来验证是否两次输入数据相同。

/**

* 2006-6-22 11:45:30

*

*/

package com.iceyb.struts.validator;

import java.lang.Object;

import org.apache.commons.validator.Validator;

import org.apache.commons.validator.util.*;

import org.apache.commons.validator.ValidatorAction;

import org.apache.commons.validator.Field;

import org.apache.commons.validator.GenericValidator;

import org.apache.struts.validator.Resources;

import org.apache.struts.action.ActionMessages;

import javax.servlet.http.HttpServletRequest;

/**

* @author YuanBin

*

* @version 1.0

*

*/

public class StrutsValidator {

public static boolean validateTwoFields(Object bean,

ValidatorAction va,

Field field,

ActionMessages errors,

Validator validator,

HttpServletRequest request){

String value = ValidatorUtils.getValueAsString( bean, field.getProperty());

String sProperty2 = field.getVarValue("secondProperty");

String value2 = ValidatorUtils.getValueAsString( bean, sProperty2);

if (!GenericValidator.isBlankOrNull(value)) {

try {

if (!value.equals(value2)) {

errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));

return false;

}

} catch (Exception e) {

errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));

return false;

}

}

return false;

}

}

g).写这个类后,将在validator-rules.xml中用这个类配置成一条规则。如下:

<!--user define validator--&gt

classname="com.iceyb.struts.validator.StrutsValidator"

method="validateTwoFields"

methodParams="java.lang.Object,

org.apache.commons.validator.ValidatorAction,

org.apache.commons.validator.Field,

org.apache.struts.action.ActionMessages,

org.apache.commons.validator.Validator,

javax.servlet.http.HttpServletRequest"

msg="errors.twofields"/>

h).在validation.xml文件中配置使用:

mask

^w+$

minlength

3

maxlength

20

minlength

6

maxlength

50

secondProperty

password

好了,现在就已经完成了struts validator的配置和使用。struts validator还能实现更复杂的验证,在这里就不全记上。写下自己的学习过程,写下用来忘记的知识。

[@more@]

http://blog.java-cn.com/user1/5423/archives/2006/34972.html

1. 使用Struts validator 验证表单数据

关于Struts validator的文章网上有很多篇,个人认为比较全面的一篇是 《truts Validator验证器使用指南》。在我的这个项目中采用DynaValidatorForm进行验证。服务器端验证方式。

DynaValidatorForm在运行时会自动对提交的表单进行封装,根据配置文件进行某些输入数据进行自定义的验证。

2. 用一个用户注册来学习具体操作

页面表单有三个输入字段,1.用户名称,2.用户密码,3.确认用户密码。采用struts 标签。和资源文件显示。

输入要求为:

用户名称字数只能是3到20,用正则表达匹配包括下划线的任何单词字符。

确认用户密码、用户密码字数只能是6到50,任何字符,且两次输入密码相同。

a).用eclipse新建一个WEB项目。在myeclipse中添加struts。新建一个Form Action & jsp,向struts中添加validator验证器插件,添加三个form properties分别是用户名称,用户密码,确认用户密码。

原文件如下:




b). 打开struts的配置文件struts-config.xml文件,会发现其的内容为(这些内容是eclipse自动添加进去):注意有颜色字

org.apache.struts.validator.DynaValidatorForm">动态验证和自动封装Form,这里还有其他几种选择,也可自己写FormBean。

attribute="registerForm"

input="/register.jsp"

name="registerForm" 对应的FormBean的名称。

path="/register"

scope="request"

type="com.iceyb.struts.action.RegisterAction">处理Action的类。

ApplicationResources" /> 采用资源文件,资源文件放在/WEB-INF/class下面。路径可以自己定义。

以下是validator插件

c). 做完了以上的工作后,重点进行validator的配置。主要是两个文件validator-rules.xml ,validation.xml。在validation.xml中的验证器调用validator-rules.xml的规则来验证数据。

d). validation.xml, validator-rules.xml怎样协同工作的呢?主要是通过validation.xml中的的depends来决定调用validator-rules.xml哪条规则来验证。

e).在这里要自定义一条规则来验证两次输入的数据是否相同类。在validator-rules.xml中随便找一条规则,再在Struts源码包中找到对应的类。如:org.apache.struts.validator.FieldChecks

f).根据org.apache.struts.validator.FieldChecks类写一个自己的类StrutsValidator,在该类中定义一个方法validateTwoFields来验证是否两次输入数据相同。

/**

* 2006-6-22 11:45:30

*

*/

package com.iceyb.struts.validator;

import java.lang.Object;

import org.apache.commons.validator.Validator;

import org.apache.commons.validator.util.*;

import org.apache.commons.validator.ValidatorAction;

import org.apache.commons.validator.Field;

import org.apache.commons.validator.GenericValidator;

import org.apache.struts.validator.Resources;

import org.apache.struts.action.ActionMessages;

import javax.servlet.http.HttpServletRequest;

/**

* @author YuanBin

*

* @version 1.0

*

*/

public class StrutsValidator {

public static boolean validateTwoFields(Object bean,

ValidatorAction va,

Field field,

ActionMessages errors,

Validator validator,

HttpServletRequest request){

String value = ValidatorUtils.getValueAsString( bean, field.getProperty());

String sProperty2 = field.getVarValue("secondProperty");

String value2 = ValidatorUtils.getValueAsString( bean, sProperty2);

if (!GenericValidator.isBlankOrNull(value)) {

try {

if (!value.equals(value2)) {

errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));

return false;

}

} catch (Exception e) {

errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));

return false;

}

}

return false;

}

}

g).写这个类后,将在validator-rules.xml中用这个类配置成一条规则。如下:

<!--user define validator--&gt

classname="com.iceyb.struts.validator.StrutsValidator"

method="validateTwoFields"

methodParams="java.lang.Object,

org.apache.commons.validator.ValidatorAction,

org.apache.commons.validator.Field,

org.apache.struts.action.ActionMessages,

org.apache.commons.validator.Validator,

javax.servlet.http.HttpServletRequest"

msg="errors.twofields"/>

h).在validation.xml文件中配置使用:

mask

^w+$

minlength

3

maxlength

20

minlength

6

maxlength

50

secondProperty

password

好了,现在就已经完成了struts validator的配置和使用。struts validator还能实现更复杂的验证,在这里就不全记上。写下自己的学习过程,写下用来忘记的知识。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/164902/viewspace-926594/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/164902/viewspace-926594/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值