Struts2-数据验证

来源:互联网 发布:如何查看已占用的端口 编辑:程序博客网 时间:2024/05/17 05:06

验证方式

1.客户端验证:就是使用JavaScript进行数据验证
2.服务器端验证:逻辑验证
注意:为确保安全,一定要进行服务器端验证,日常开发一般客户端+服务器端验证一起使用。

Struts2的服务器端验证

1.编程式验证

必须满足的条件:
a、动作类必须继承ActionSupport
b、在代码中编写验证规则
(1)、针对动作类中的所有动作方法进行验证:

先创建动作类继承ActionSupport,在动作类中覆盖public void validate()方法。

在validate()方法中编写具体的验证规则

问题:此种方法会对所有的动作方法进行验证,即使该动作类不需要进行数据验证,容易产生异常

解决方法1:

给不需要验证的动作方法添加一个@SkipValidation注解。

解决方法2:

遵守书写规范。

给需要验证的方法名前加上validate,方法首字母大写,例如:要给public String register(){ }方法进行数据验证,public String validateRegister(){ }

编程式验证的弊端:硬编码。

2.声明式验证

通过编写验证规则的xml文件。需要验证时,编写xml文件,不要验证,就不写。

优势:解决了编程式验证的弊端

a、针对动作类中的所有动作进行验证:在动作类所在的包中,建立一个ActionClassName-validation.xml的文件
此种方式针对的是动作类中的所有动作方法
b、针对动作类中的某个动作进行验证:在动作类所在的包中建立一个xml文件,名称为ActionClassName-ActionName-validation.xml

<!-- 当使用ActionClassName-validation.xml来命名文件时,它是一个动作类验证器。会验证动作类中的所有动作方法 --><validators><!-- 基于字段的声明式验证 --><!-- field中name属性指定的是表单name属性的取值 --><field name="username"><!-- struts2框架为我们集成了很多的内置验证器。requiredstring会验证输入内容是否为空,是否为空字符串。并且去掉左右空格--><field-validator type="requiredstring"><message>用户名呢</message></field-validator></field></validators>

3.Struts2内置的常用声明式验证器

内置验证器的位置在xwork-core-2.3.15.3.jar\com\opensymphony\xwork2\validator\validator\default.xml中
<validators><!-- 基于字段的声明式验证 --><!-- field中name属性指定的是表单name属性的取值 --><field name="username"><!-- struts2框架为我们集成了很多的内置验证器。requiredstring会验证输入内容是否为空,是否为空字符串。并且去掉左右空格--><field-validator type="requiredstring"><message>用户名必须存在</message></field-validator></field><!-- 基于验证器的验证 --><validator type="requiredstring"><!-- 以注入的方式,提供要验证的字段信息 setFieldName("password");--><param name="fieldName">password</param><message>密码必须输入</message></validator></validators>

验证器案例:








原创粉丝点击