struts2输入校验有三种方式:
①配置文件校验
②注解校验
③手动校验
本文简单介绍配置文件校验,②③非配置文件校验在下篇文章中介绍!
介绍内容只是简单框架,具体实现细节参照文档!
一:struts2输入校验的原因:避免异常输入导致系统崩溃!
二:struts2输入校验的分类:客户端校验和服务器端校验!一般使用struts2的服务器端校验,客户端校验由js等前端技术来完成!
三:基本输入校验
struts2输入校验非常简单!只需要2步:
1.编写校验文件(重点)
2.在struts.xml中增加一个result子元素-为input逻辑视图指定实际的物理视图资源(因为当校验失败后struts2将会自动返回名为input的逻辑视图)
剩下的事情框架会自动完成!
下面详细解释第一步:
1.1:文件的命名:
1.1.1:Action名字-validation.xml 例:LoginAction-validation.xml!适用于一个action类中只有一个处理逻辑!
1.1.2:Action名字-struts.xmlAction元素name属性的值-validation.xml 例:LoginAction-login-validation.xml(常用)!适用于一个action中有多个处理逻辑(login/register等),且每个处理逻辑有不同的校验规则!
前两个可校验的属性(action中的属性)是基本数据类型,文件存放路径和Action在同一路径下!
1.1.3:User-userContext-valiadation.xml 适用于action的属性不再是基本数据类型,存放路径和User实体类在同一路径下!用到的校验器是visitor校验器!
1.2校验文件
1.2.1有两种配置风格
1.2.1.1字段校验器配置风格(推荐使用这种,因为结构比较清晰)
<validators>
<!-- 这个校验器是字段校验器(常用) field元素是校验规则文件的基本组成单位 -->
<!-- field指定一个Action属性必须遵守的规则 -->
<field name="被校验的字段">
<!-- field-validator指定一个校验规则 -->
<field-validator type="校验器名">
<!-- 需要为不同校验器指定数量的校验参数 -->
<param name="参数名">参数值</param>
<!-- 校验失败后的提示信息,key指定国际化信息的key -->
<message key="I18Nkey">校验失败后的提示信息</message>
</field-validator>
<!-- 若满足多个规则 可以配置多个校验器 -->
</field>
</validators>
1.2.1.2非字段校验器配置风格(以校验器优先)
<!-- 校验文件的跟元素 -->
<validators>
<!-- 这个校验器是非字段校验器 以校验器优先的配置方式 -->
<validator type="校验器名">
<param name="fieldName">需要被校验的字段(Action的属性值)</param>
<!-- 为不同校验器指定数量的校验参数 -->
<param name="参数名">参数值</param>
<!-- 校验失败后的提示信息 -->
<message key="I18Nkey">校验失败后的提示信息</message>
</validator>
<!-- 举例 -->
<!-- 必填字段校验器 -->
<validator type="requiredstring">
<param name="fieldName">username</param>
<param name="trim">true</param>
<!-- 指定校验器失败后输出对应的国际化信息 -->
<message>${getText("username.required")}</message>
</validator>
</validators>
1.2.2短路校验
短路校验:对同一个字段内的多个校验器,如果一个短路校验器失败后,其他校验器不会继续校验!核心:short-circuit=”true”开启短路校验!
1.2.3校验顺序
非字段校验器优先执行
1.2.4校验文件搜索顺序
从上到下
1.2.5內建校验器
必填校验器|必填字符串校验器|整数校验器|整数校验器|日期校验器|表达式校验器|字段表达式校验器|邮件地址校验器(不常用)|网址校验器(不常用)|visitor校验器(校验属性是action的复合属性)|转换校验器(解决类型转换失败之后的一系列问题)|字符串长度校验器|正则表达式校验器|