1. 认知
校验工作量比较大
客户端校验:js
服务器端校验:代码
实际开发:客户端+服务器端校验
2.Struts2中的校验
前提:动作类继承ActionSupport
转换失败:都会转向一个name=input的逻辑视图
2.1 编程式校验:代码中编写校验代码
缺点:硬编码是最大的缺点
优点:对于验证可以做到更加精细化
2.1.1 针对动作类中的所有动作方法进行校验:
覆盖validate方法即可,会在动作方法执行前先执行(拦截器干的)
2.1.2 针对某个动作方法进行校验
方式一:覆盖validate方法,对于不需要校验的使用@SkipValidation
方式二:覆盖validate方法时,遵守一定的命名规则
比如验证login动作方法:public void validateLogin(){}
public void validateRegist(){
if(StringUtils.isBlank(user.getUsername())){
//没有输入用户名
addFieldError("username","请输入用户名");
}
}
2.2 声明式校验:可插入式的校验方式(推荐使用)
2.2.1 针对所有动作方法进行校验
在动作类所在的包中,建立一个名称为”动作类名-validation.xml”的配置文件
从xwork-core-.jar中找到xwork-validator-1.0.3.dtd
方式一:针对字段,先写字段,后指定的验证器
<?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="username">
<!-- 指定验证器:内置验证器requiredstring。判断是否为null或空字符串,默认去掉首位空格 -->
<field-validator type="requiredstring">
<!-- 错误消息提示 -->
<message>您的用户名呢</message>
</field-validator>
</validators>
方式二:先指定验证器,再告知要验证的字段
<validator type="requiredstring">
<!-- 给验证器注入参数:setFieldName(),告知要验证的是哪个字段 -->
<param name="fieldName">password</param>
<param name="trim">false</param>
<message>您的密码呢</message>
</validator>
2.2.2 针对某个动作进行校验
在动作类所在的包中,建立一个名称为”动作类名-动作名-validation.xml”的配置文件
2.2.3 struts2中提供的内置验证器
在xwork-core-2.3.15.3.jar\com\opensymphony\xwork2\validator\validators\default.xml文件中