验证方式
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>
验证器案例: