第5章 Struts 2校验框架.ppt_第1页
第5章 Struts 2校验框架.ppt_第2页
第5章 Struts 2校验框架.ppt_第3页
第5章 Struts 2校验框架.ppt_第4页
第5章 Struts 2校验框架.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章Struts2校验框架 前面介绍了Struts2的输入校验 但是实现输入校验就要编写大量的代码 实现起来比较复杂和麻烦 Struts2框架提供了一套校验框架 通过校验框架能够非常简单和快速地完成输入校验 基于校验框架来完成输入校验 只需通过指定简单的配置文件即可 5 1Struts2校验框架初探 5 1 1使用校验框架的好处5 1 2编写校验规则文件 5 1 1使用校验框架的好处 前面介绍了Struts2的输入校验 但是发现要实现输入校验就要编写大量的代码 而且修改起来比较麻烦 还有日期的校验 邮箱校验这些都是经常要用到输入校验 每次都需要手动地在validate 方法中来添加校验规则 前面介绍的是在没有使用验证框架的基础上 全手动来添加输入校验功能 Struts2框架是非常强大的 它提供了一套验证框架 通过验证框架能够非常简单和快速地完成输入校验 基本的输入校验一定要熟悉 只有在了解了手动添加输入校验的基础上才能更好地了解Struts2校验框架 这就是为什么一开始没有直接介绍使用Struts2校验框架 而是从最基础的手动添加校验功能的原因 5 1 2编写校验规则文件 前面提到了校验规则文件其实就是一个XML文件 该规则文件名为ActionName validation xml 其中ActionName为对应处理Action的类名 validation xml为固定格式 文件存放在Action文件的相同目录下 现在有一个问题 如何查看这个XML文件中有哪些标签呢 首先可以查看该XML文件中的声明 从而知道该XML文件必须符合什么规范 比如上面这个文件就必须符合 5 2校验器风格 Struts2提供了两种方式来配置校验器 字段校验器风格和非字段端校验器风格 这两种配置风格并没有本质上的区别 只是组织校验规则文件的方式不同 5 2 1字段校验器风格 validators元素下可以出现两个元素field和validator 使用这两个元素有什么不同呢 如果使用field元素就是字段优先 表示使用字段校验器配置风格 如果使用validator元素就是校验器优先 就是非字段校验器配置风格 通过上面的DTD规范 设计校验规则文件示意图如图5 1所示 5 2 2非字段校验器风格 非字段校验器配置风格 从名称上来看知道它肯定不是以字段优先 那么它以什么优先呢 从前面的分类介绍来看 非字段校验器配置风格是使用校验器优先 通过上面的DTD规范 设计校验规则文件示意图如图5 2所示 5 2 3配置风格比较 前面介绍了两种校验器配置风格 到底哪种配置风格比较好呢 有些开发人员觉得字段校验器配置风格可能会比较好点 因为是以字段优先的 这样可以从一个字段一个字段地着手来编写校验规则 而且在一个字段中可以添加多个校验规则 如果使用非字段校验规则 首先必须配置使用哪个校验器 然后才配置被校验字段 这样比较难理解 这个关系到个人偏向问题 有些开发人员可能喜欢先定义好被校验字段 然后为该字段添加校验规则 也有些开发人员可能喜欢先定义好规则 然后再在规则中指定被校验字段 可以根据个人的喜好选择其中的一种 但是建议不要混用这两种配置风格 如果混用的话 会不会出现错误呢 其实错误倒是不会产生 但是这样校验规则文件代码就会显得非常凌乱了 使用其中一种配置风格能够使得代码更加整洁 容易看懂 5 3内建校验器 Struts2提供了非常多的默认校验器 在开发中使用内建的校验器能满足大部分的校验需求 Struts2提供的校验器包括必填校验器 必填字符串校验器 整数校验器 日期校验器 字段表达式校验器等 5 3 1Struts2默认校验器 Struts2提供了非常多的默认校验器 在开发中使用内建的校验器能满足大部分的校验需求 对于这些内建的校验器 只需知道校验器名称以及参数就能实现对应的校验功能 对于底层的校验细节则可以不用了解 下面来看Struts2到底提供了哪些内建的校验器 首先找到导入的库文件xwork 2 0 4 jar 依次展开其中的com目录 opensymphony目录 xwork2目录 validator目录 validators目录 如图5 3所示 5 3 2必填校验器 从default xml注册文件中可以知道必填校验器的名称为required 对应的处理类为com opensymphony xwork2 validator validators RequiredFieldValidator 其中RequiredFieldValidator类源代码如下 fieldName fieldnameifplain validatorsyntaxisused notneedediffield validatorsyntaxisused publicclassRequiredFieldValidatorextendsFieldValidatorSupport publicvoidvalidate Objectobject throwsValidationException StringfieldName getFieldName Objectvalue this getFieldValue fieldName object if value null addFieldError fieldName object 5 3 3必填字符串校验器 同样从default xml注册文件中可以知道必填字符串校验器的名称为requiredstring 对应的处理类为com opensymphony xwork2 validator validators RequiredStringValidator 其中RequiredStringValidator类源代码如下 5 3 4整数校验器 同样从default xml注册文件中可以知道整数校验器的名称为int 对应的处理类为com opensymphony xwork2 validator validators IntRangeFieldValidator 其中IntRangeFieldValidator类源代码如下 5 3 5双精度浮点数校验器 同样从default xml注册文件中可以知道双精度浮点数校验器的名称为double 对应的处理类为com opensymphony xwork2 validator validators DoubleRangeFieldValidato 其中DoubleRangeFieldValidator类源代码如下 5 3 6日期校验器 同样从default xml注册文件中可以知道日期校验器的名称为date 对应的处理类为com opensymphony xwork2 validator validators DateRangeFieldValidator 其中DateRangeFieldValidator类源代码如下 fieldName Thefieldnamethisvalidatorisvalidating RequiredifusingPlain ValidatorSyntaxotherwisenotrequired min themindaterange Ifnotspecifiedwillnotbechecked max themaxdaterange Ifnotspecifiedwillnotbechecked publicclassDateRangeFieldValidatorextendsAbstractRangeValidator privateDatemax privateDatemin 5 3 7字段表达式校验器 同样从default xml注册文件中可以知道字段校验器的名称为fieldexpression 对应的处理类为com opensymphony xwork2 validator validators FieldExpressionValidatorr 其中FieldExpressionValidatorr类源代码如下 fieldName Thefieldnamethisvalidatorisvalidating RequiredifusingPlain ValidatorSyntaxotherwisenotrequired expression TheOgnlexpression mustevaluatetoaboolean whichistobeevalidatedthestack publicclassFieldExpressionValidatorextendsFieldValidatorSupport privateStringexpression publicvoidsetExpression Stringexpression this expression expression 5 3 8邮箱地址校验器 从default xml注册文件中可以知道日期校验器的名称为email 对应的处理类为com opensymphony xwork2 validator validators EmailValidator 其中EmailValidator类源代码如下 fieldName Thefieldnamethisvalidatorisvalidating RequiredifusingPlain ValidatorSyntaxotherwisenotrequired publicclassEmailValidatorextendsRegexFieldValidator seeXW 371publicstaticfinalStringemailAddressPattern b A Za z0 9 A Za z0 9 A Za z0 9 A Za z0 9 A Za z0 9 2 A Za z0 9 2 A Za z0 9 2 b publicEmailValidator setExpression emailAddressPattern setCaseSensitive false 5 3 9网址校验器 从default xml注册文件中可以知道网址校验器的名称为url 对应的处理类为com opensymphony xwork2 validator validators URLValidator 其中URLValidator类源代码如下 5 3 10转换校验器 从default xml注册文件中可以知道转换校验器的名称为conversion 对应的处理类为com opensymphony xwork2 validator validators ConversionErrorFieldValidator 其中ConversionErrorFieldValidator类源代码如下 5 3 11字符串长度校验器 从default xml注册文件中可以知道字符串长度校验器的名称为stringlength 对应的处理类为com opensymphony xwork2 validator validators StringLengthFieldValidator 其中StringLengthFieldValidator类源代码如下 5 3 12正则表达式校验器 从default xml注册文件中可以知道正则表达式校验器的名称为regex 对应的处理类为com opensymphony xwork2 validator validators RegexFieldValidator 其中RegexFieldValidator类源代码如下 5 4使用校验框架完成输入校验 前面介绍了Struts2中内置的校验器 下面将通过这些校验器来改写注册案例 同时将结合国际化处理来实现国际化信息提示 并通过配置来添加客户端校验 5 4 1完成输入校验 前面介绍了Struts2中内置的校验器 现在开始使用这些校验器来改写以前那个注册案例 不再使用手动添加校验代码的方式 而是使用编写校验规则文件的方式来进行输入校验 下面来看有哪些输入校验规则 1 用户名 密码 确认密码必须输入 2 用户名只能是数字或者字母 长度为6 20之间 3 密码 确认密码必须是数字或者字母 长度为6 20之间 4 密码和确认密码必须相同 5 年龄必须为整数而且必须是有效的年龄值 6 出生日期必须为正确的日期格式如1988 01 03 而且只能是1900 1 1 2010 1 1年之间 7 邮箱地址必须为合法的邮箱地址 5 4 2增加客户端校验 Struts2还提供了一个非常好的功能 就是能通过校验规则文件自动添加客户端输入校验 先来看下如何来添加客户端校验 非常简单 只用标签中添加validate true 属性即可 代码如下所示 5 4 3国际化提示信息 下面来为程序添加国际化功能 首先来编写国际化资源文件 并将错误提示以键值对的形式保存在资源文件中 代码如下所示 age rule 年龄必须在 min 至 max 之间birth rule 出生日期必须在1900 01 01至2010 01 01之间email rule 请输入有效的电子邮箱地址password required 必须输入密码password rule 密码长度必须为6至20之间repassword equals 密码和确认密码必须一致repassword required 必须输入确认密码repassword rule 确认密码长度必须为6至20之间username required 必须输入用户名username rule 用户名长度必须为6至20之间别忘了在struts xml文件中使用全局属性加载该国际化资源文件 代码如下所示 5 4 4客户端校验与国际化问题 之所以开始要去掉客户端校验功能 是因为同时使用客户端校验功能和国际化功能会出现异常 现在为注册页面的form元素添加validate true 属性 增加客户端校验功能 这时再打开用户输入页 发现页面出现了异常 如图5 21

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论