验证表单介绍
为什么要进行数据验证
对数据的合法性进行检查,只允许合法的数据进入应用程序
在哪里实现数据验证
客户端验证
数据提交前在客户端验证
可使用JavaScript或jQuery实现
特点:1.减少客户的等待时间;2.减小服务器压力
服务器端验证
在数据提交后服务器端验证
特点:1.防止“绕过”客户端验证提交非法数据;2.可以在服务器端处理数据前确保数据的合法性
Struts2有两种方式实现服务器端验证
使用ActionSupport编码实现验证
使用验证框架实现验证
ActionSupport编码实现验证
使用ActionSupport实现验证
在Action类的业务方法中直接验证
重写validate()方法
使用validateXxx()方法
添加错误信息
addFieldError(String fieldName,StringerrorMessage)
addActionError(String anErrorMessage)
在页面输出验证结果
<s:fielderror/>输出一个或所有字段的错误信息
<s:actionerror/>输出所有Action的错误信息
<action>的配置
<result name="input">x.jsp</result>
validate()方法实现验证
在validate()方法中实现验证
重写ActionSupport 类的validate()方法
在validate()方法中实现验证
将数据验证和业务处理分离
添加与显示错误信息的方式不变
小经验
接收参数时,数据转换失败也会调用validate()方法
validate()方法验证不通过,不会执行业务方法
使用validateXxx()方法实现验证
validate()会对Action类中所有业务方法起作用
如果仅想对某个业务方法进行数据验证怎么办?
使用validateXxx()方法实现验证
Struts2支持validateXxx()方法针对xxx()方法进行数据验证
小经验
validate()方法和validateXxx()方法同时存在时都会起作用
validateXxx()方法的调用要先于validate()方法
使用验证框架实现验证
验证框架
验证实现的部分方便复用、扩展
验证的实现与业务处理分离
使用验证框架的过程
编写JSP数据输入页面
编写Action类及其配置文件
在Action类同目录下创建验证文件ActionName-validation.xml
编写验证规则
ActionName-validation.xml对Action类中所有业务方法生效
如果想对某一业务方法配置验证规则怎么做呢?
解决方法
对Action类中的某一业务方法单独编写<action>配置并使用method属性指定该业务方法
提供ActionName-alias-validation.xml文件进行验证
验证规则的编写不变
验证框架实现验证小结
验证框架
ActionName-validation.xml可对Action类中所有业务方法起作用
ActionName-alias-validation.xml可对Action类中某一业务方法起作用
如以上两个文件同时存在,两个文件都会起作用
验证顺序
Action父类-validation.xml
Action父类-alias-validation.xml
Action类-validation.xml
Action类-alias-validation.xml
小结
使用ActionSupport实现验证有三种方式
业务方法直接验证、 validate()、 validateXxx()
在Action类中添加错误信息
使用addFieldError()方法添加字段错
使用addActionError()方法添加Action业务相关的错
使用验证框架实现验证
ActionName-validation.xml
ActionName-alias-validation.xml
验证框架的验证规则可参考帮助文件
显示错误信息
<s:fielderror/>输出一个或所有字段的错误信息
<s:actionerror/>输出所有Action的错误信息