【struts2】——数据校验


    校验方式

    客户端校验:JavaScript

    服务器端校验:代码

    实际开发:客户端+服务器端校验

    

    服务器校验

    1)编程式校验:动作类中写代码

     a.针对动作类中的所有动作方法进行校验

      在动作类中

	//校验:针对所有的动作方法进行校验
	public void validate(){
		if(StringUtils.isEmpty(name)){
			//姓名为空
			addFieldError("name","姓名不能为空");
		}
	}

     b.针对动作类中的指定方法进行校验

      方式一:麻烦

	//校验:针对保存方法进行校验
	public void validateSave(){
		if(StringUtils.isEmpty(name)){
			//姓名为空
			addFieldError("name","姓名不能为空");
		}
	}
	public String save(){
		System.out.println("保存:"+name+":"+birthday+":"+age);
		return null;
	}
	//校验:针对更新方法进行校验
	public void validateUpdate(){
		if(StringUtils.isEmpty(name)){
			//姓名为空
			addFieldError("name","姓名不能为空");
		}
	}
	public String update(){
		System.out.println("更新:"+name+":"+birthday+":"+age);
		return null;
	}
     方式二:使用注解,简单

	public void validate(){
		if(StringUtils.isEmpty(name)){
			//姓名为空
			addFieldError("name","姓名不能为空");
		}
	}
	public String save(){
		System.out.println("保存:"+name+":"+birthday+":"+age);
		return null;
	}
	@SkipValidation
	public String update(){
		System.out.println("更新:"+name+":"+birthday+":"+age);
		return null;
	}
	@SkipValidation
	public String findAll(){
		System.out.println("查询");
		return null;
	}

    2)声明式校验:写配置文件

     把校验规则和消息提示放到配置文件中。

     a.针对动作类中的所有动作方法进行校验

      在动作类所在的包中,建立名字为“动作类名-validatiobn.xml”的配置文件,如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  		"-//Apache Struts//XWork Validator 1.0.3//EN"
  		"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
	<!-- 形式一:给一个字段指定多个验证器
	<field name="name">
		<field-validator type="requiredstring">
			<message>名字不能为空哦</message>
		</field-validator>
	</field>
	-->
	<!-- 形式二:验证器验证字段。还可以验证非字段的验证 -->
	<validator type="requiredstring">
		<param name="fieldName">name</param>
		<message>亲,名字你怎么空着呢</message>
	</validator>
</validators>

    b.针对动作类中的指定方法进行校验

    方式一:比较简单一点,使用@kipValidation注解

    方式二:比较麻烦,动作类名-动作别名(指struts.xml中动作的名称)-validation.xml


    专题:Strust2框架提供的内置验证器


    3)自定义声明式校验器

     编写一个类,集成FieldValidatorSupport,定义一个基于字段的验证器。

//验证密码的强度
public class StrongPasswordValidator extends FieldValidatorSupport {
	//object:实际上就是动作类
	public void validate(Object object) throws ValidationException {
		String fieldName = getFieldName();//得到要验证的字段名
		String fieldValue = (String) getFieldValue(fieldName, object);
		if(StringUtils.isNotEmpty(fieldValue)){
			//有值时再做强度验证
			if(!isPasswordStrong(fieldValue)){
				addFieldError(fieldName, object);
			}
		}
	}

    定义验证器后使用

    在WEB-INF/classes目录下,建立一个名称为validators.xml的配置文件,如下:在声明式验证中使用。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator Definition 1.0//EN"
        "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">
<validators>
    <validator name="strong" class="com.itheima.validatiors.StrongPasswordValidator"/>
</validators>

    


 

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值