1、第15章struts2校验机制输入校验一、Struts2校验机制Struts2框架提供了优秀的校验机制,它们可以分为3部分:(1) 内置校验器,对web应用开发中常见的校验功能进行了封装(2) 校验规则声明,允许开发人员通过XML配置文件或者Java Annoation来引用内置校验器定义输入校验规则(3) 校验拦截器,框架通过拦截器validation和workflow来实现对输入信息的校验工作。Validation拦截器根据校验规则声明调用内置拦截器实现校验工作,并负责维护创建一个字段相关的错误信息列表,workflow负责检查此错误信息列表,如果存在错误信息,则返回Action组件相关的
2、input结果视图,并在返回的视图中显示相关的错误信息。此外还支持开发人员定义自己的校验器。类型转换和输入校验是Struts2框架对客户端提交信息进行处理的两个阶段。客户端提交的信息首先进行类型转换,不管是否在转换过程中出现异常,都将进入输入校验阶段。只有在类型转换和输入校验没有任何错误的情况下才会进入Action组件的业务逻辑处理。二、利用Struts2框架实现校验【例子】【Quiz.jsp】 问卷调查 你喜欢的笔记本品牌 【Quiz_success.jsp】 问卷结果 谢谢! 你喜欢的笔记本品牌是: 【QuizAction.java】package my.ognl;import com.o
3、pensymphony.xwork2.ActionSupport;public class QuizAction extends ActionSupport private String name; private int age; private String answer; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = a
4、ge; public String getAnswer() return answer; public void setAnswer(String answer) this.answer = answer; 【QuizAction-validation.xml】 用户名不可为空6120年龄值超出合理范围【struts.xml】 /WEB-INF/page/Quiz_success.jsp /Quiz.jsp 测试地址栏输入http:/localhost:8080/example_ch1/Quiz.jsp如果不输入姓名,年龄输入200,笔记本品牌输入IBM,得到的结果为在与Action组件同样的
5、package路径下寻找名为*-validation.xml的校验规则声明文件,其中*代表Action组件的名称。对于实现了输入校验的Action组件,必须定义一个名为input的Result视图,当框架调用校验器执行校验失败时,将返回此Result视图。三、Struts2内置校验器位于xwork-2.0.4.jar压缩包中(com.opensymphony.xwork2.validator.validators)有个文件default.xml,该文件中定义了Struts2框架内建的校验器。default.xml文件定义了常用的校验器类型。四、校验器配置字段校验器:判断某个字段属性的输入是否有
6、效非字段校验器:不是针对某个字段,而是针对多个字段的输入值之间的逻辑关系进行校验相应的,Struts2内置校验器也就有两种配置风格,一种是字段校验风格,一种是非字段校验风格。1、必填校验器,指定字段不允许为空:(1)非字段校验:username用户名不能为空(2)字段校验:用户名不能为空2、必填字符串校验器,字段值必须非空且长度大于0:(1)非字段校验:usernametrue用户名不能为空(2)字段校验:true用户名不能为空 trim:可选参数,用于指定是否在校验之前对字符串进行整理,默许为true。3、字符串长度校验器,要求被校验的字段长度必须在指定范围之内:(1)非字段校验:usern
7、ame410用户名长度在$minLength到$maxLength之间(2)字段校验:410true4、整数校验器,整数值在指定的范围内:(1)非字段校验:age10100年龄必须在在$min到$max之间(2)字段校验:10100年龄必须在在$min到$max之间5、日期校验器,要求日期在指定范围内(1)非字段校验:birthday1990-01-022010-07-28生日数据错误(2)字段校验:1990-01-012010-07-28 min:指定字段日期值的最小值,该参数为可选参数。 max:指定字段日期值的最大值,该参数为可选参数。6、浮点数值校验器:(1)非字段校验:percent
8、age20.150.1数据错误(2)字段校验:20.150.1 minInclusive|minExclusive:指定字段的最小值,包含该值|不包含该值。 maxInclusive|maxExclusive:指定字段的最大值,包含该值|不包含该值。7、表达式校验器,要求满足指定的表达式要求:.Failed to meet Ognl Expression. expression:该参数为一个逻辑表达式,该参数使用OGNL表达式,并基于值栈计算,返回一个Boolean类型值。8、字段表达式校验器,要求指定字段值满足表达式要求:(1)非字段校验:myField #myGirfriendCreditLimitMy credit limit should be MORE than my girlfriend(2)字段校验: #myGirfriendCreditLimitMy credit limit should be MORE than my girlfriend9、邮件地址校验器,有效的邮件地址(1)非字段校验:MyEmail非法的邮件地址(2)字段校验:非法的邮件地址10、网址校验器,指定字段是否是有效的URL地址:(1)非字段校验:myHomePageInvalid homepage url(2)字段校验:Inva
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1