1.输入验证
1.1 编程式方式:验证规则写到了代码中,硬编码,编程式的方式也分为两种:
(1)第一种是针对动作类中的所有方法进行验证
动作类需要实现ActionSupport覆盖validate
@Override
public void validate() {
if ("".equals(stu.getUsername().trim())){
addFieldError("stu.username","用户名不能为空!");
//向map中添加错误
//出现错误,默认会转向result=input视图
}
if ("".equals(stu.getPassword().trim())){
addFieldError("stu.password","密码不能空!");
}
}
//方法内部: 编写验证规则, 不正确添加信息 addFieldError
(2)第二种是针对动作类中的部分方法进行验证,这个也分为两种方式:
第一种:注解的方式
@SkipValidation//这是个忽略
public String findAll(){
System.out.println("findAll");
return null;
}
第二种:只针对该方法进行验证 (我这个动作类方法名为regist,针对谁,就叫什么名字)
public void validateRegist() {
if ("".equals(stu.getUsername().trim())){
addFieldError("stu.username","用户名你没写啊!");
//向map中添加错误
//出现错误,默认会转向result=input视图
}
if ("".equals(stu.getPassword().trim())){
addFieldError("stu.password","密码不能空!");
}
}
//验证功能都是由 validation 拦截器所处理的 回显错误信息是由 workflow 拦截器处理的
1.2声明式验证:把验证规则写到配置文件,这样更改非常方便。声明式验证也分为两种:
(1)针对动作类中的所有动作进行验证
动作类是模型:在Action动作类的包中创建一个名字为:动作类名-validation.xml的配置文件
<?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="stu.username">
<!--验证规则
requiredstring:代表的是不是空字符串
required:是不是 null
-->
<field-validator type="requiredstring">
<message>你的用户名不能为空啊!</message>
</field-validator>
</field>
</validators>
(2)针对动作类中的部分方法进行验证
在动作类Action包中创建: 动作类名-动作名-validation.xml 配置文件.
动作名是 struts.xml 中的 action name
<?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="stu.username">
<field-validator type="requiredstring">
<message>你TM用户名为空!!!</message>
</field-validator>
</field>
<validator type="regex">
<param name="fieldName">stu.username</param>
<param name="regexExpression">
<!--正则表达式-->
<![CDATA[
[a-zA-Z]{3,8}
]]>
</param>
<message>你的名字必须有3-8个字母组成</message>
</validator>
<field name="stu.password">
<field-validator type="regex">
<param name="regexExpression">
<![CDATA[
\d{3,8}
]]>
</param>
<message>你的密码需要3-8个数字组成</message>
</field-validator>
</field>
<field name="stu.gender">
<field-validator type="required">
<message>性别你TM倒是选一个啊!!!</message>
</field-validator>
</field>
<field name="stu.email">
<field-validator type="email">
<message>邮箱都忘了????</message>
</field-validator>
</field>
<field name="stu.grade">
<field-validator type="int">
<param name="min">0</param>
<param name="max">150</param>
<message>成绩在0-150之间</message>
</field-validator>
</field>
</validators>