Validator验证框架
Validator验证框架
系统分析
在设计Validator验证框架时,需要明确以下问题。
(1)当用户没有输入数据时,弹出英文提示信息。
(2)当用户输入的数据长度大于系统设置的数据长度,弹出英文提示信息。
(3)当用户输入的账号或密码不正确,弹出英文提示信息。
1.2 工作流程图
Validator验证框架系统流程如图1所示。

技术要点分析
1.1 技术要点
Validator验证框架在Struts应用中得到了广泛的运用,Validator验证框架主要依赖两个Jar文件。
q jakarta-oro.jar:该文件主要提供了一些文本类、具有文本替换、过滤和分割等功能。
q commons-validator.jar:该文件提供了一个简单、可扩展的验证框架,包括了通用的验证方法和规则。
在Struts中,这两个Jar文件添加到应用WEB-INF/lib目录中。
Validator框架采用两个基于XML的配置文件来配置验证规则。这两个文件为validator-rule.xml和validation.xml。在Struts中,它们均存放在WEB-INF文件夹下。
1.2 validator-rules.xml文件
validator-rules.xml文件包括了一组通用的验证规则,对所有的Struts都适用。一般情况下,没有必要修改该文件,除非需要修改或扩展默认的规则。
说明:如果想扩展默认的验证规则,最好把自定义的规则放在另一个XML文件中,而不是直接添加到validator-rules.xml文件中,这样,当升级Validator框架的版本时,不需要修改validator-rules.xml文件。
在validator-rules.xml文件中,每个<validator>元素定义了一个唯一的验证规则。例如,以下代码定义了一个名为“required”的验证规则。
<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>
(1)name属性
name属性指定验证规则的逻辑名,这个名字必须是唯一的。
(2)classname和method属性
classname和method属性分别指定实现验证规则逻辑的类和方法。
(3)msg属性
msg属性制定来自于资源文件中的消息key。当验证失败时,Validator框架将根据这个消息key到资源文件中查找匹配的消息文本。
(4)depends属性
depends属性制定在调用当前验证规则之前必须先调用的其他验证规则。例如以下“maxlength”验证规则的配置代码中使用了depends属性。
<validator name="maxlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMaxLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
depends="required"
msg="errors.maxlength"
jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>
以上代码表明,在调用“maxlength”验证规则之前,先调用“required”规则。如果depends属性包含多个验证规则,则用逗号隔开,例如:
depends="required,integer"
如果调用depends属性指定的验证规则验证失败,就不会再调用下一个规则。
1.3 valiation.xml文件
Validator框架的另一个配置文件为valiation.xml文件,这个文件用于声明Form Bean应该采用的验证例程,取代在ActionForm类中编程的方式来实现验证逻辑。下面将介绍valiation.xml文件中的元素。
(1)<form-validation>元素
<form-validation>元素是Validator配置文件的根元素,它包含两个子元素:<global>和<formset>元素。<global>元素可以出现0次或者多次,而<formset>元素可以出现一次或者多次。
(2)<global>元素
在<global>元素中可以定义<constant>子元素,它用来定义常量表达式,在文件的其余地方可以应用这些常量表达式。
(3)<formset>元素
<formset>元素包含两个子元素:<constant>和<form>。<constant>可以出现0次或者多次,<form>元素可以出现一次或者多次。
(4)<form>元素
<formset>元素的<form>子元素用于为表单配置验证规则,它的name属性指定了表单的名字。<form>元素可以包含一个或者多个<field>子元素。
(5)<field>元素
<form>元素的<field>子元素用于配置表单中的字段的验证规则。
(6)<msg>元素
<field>元素的<msg>子元素指定验证规则对应的消息文本。
(7)<arg>元素
<field>元素可以包括4个附加的子元素:<arg0>、<arg1>、<arg2>以及<arg3>,用户替换复合消息中的参数。<arg0>元素指定第一个替换值,<arg1>元素指定第二个替换值,依次类推。
(8)<var>元素
<field>元素还可以包含0个或者多个<var>元素。<var>元素用来向验证规则传递参数。
运行结果

Validator验证框架的更多相关文章
- Hibernate Validator验证框架中@NotEmpty、@NotBlank、@NotNull 的区别
Hibernate Validator验证框架中@NotEmpty.@NotBlank.@NotNull的主要使用情况 @NotEmpty 用在集合类上面 @NotBlank 用在String上 ...
- spring MVC 使用 hibernate validator验证框架,国际化配置
spring mvc使用hibernate validator框架可以实现的功能: 1. 注解java bean声明校验规则. 2. 添加message错误信息源实现国际化配置. 3. 结合sprin ...
- 学习Validator验证框架总结
在项目开发中许多地方需要加以验证,对于使用if-else简单粗暴一个一个验证,spring的validation封装了Javax ValidationI校验参数,大大缩减了代码量. 以前的分层验证,从 ...
- SAR-303 xml validator验证框架
// 配置文件详解 <mvc:annotation-driven validator="validator" /> <bean id="validato ...
- hibernate validate验证框架中@NotEmpty、@NotbBank、@NotNull的区别
Hibernate Validator验证框架中@NotEmpty.@NotBlank.@NotNull 的区别 Hibernate Validator验证框架中@NotEmpty.@NotBlank ...
- jQuery Validate验证框架详解
转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...
- strus2验证框架
为什么要用验证框架? 当验证规划比较复杂时,Action类的代码江边的非常繁琐,假如我们要对电话号码进行验证,是非常麻烦的. 验证框架的优点 Struts2中内置了一个验证框架,将常用的验证规则进行了 ...
- 【积累】validate验证框架的使用
validate验证框架的使用:用验证框架可以很方便的验证前端页面输入的内容可以自定义验证方法 内容:0:环境搭建 1:基础用法 2:自定义用法 0:基本环境的搭建 0.1:下载js文件 0.2:引入 ...
- Struts2验证框架实例
今天写了个Struts验证框架的实例,总算把验证框架弄清楚了. 上一篇Struts实例的action没有继承ActionSupport类,虽然也可以实现action的功能,但是却不能应用Struts提 ...
随机推荐
- go 实现单链表反转
go实现单链表翻转 package main import "fmt" type ListNode struct { data interface{} Next *ListNode ...
- linux shell脚本、命令学习
1,echo "test" > test.txt 输出重定向到text.txt,文件不存在就创建 echo "test" >> test ...
- 基于Https协议返回Jason字符串
一:代码结构 二:框架结果: spring+springMvc+springJdbc 三:源代码 1:Ctrl 层 package com.todaytech.yth.gdsd.base.DataIn ...
- https请求之绕过证书安全校验工具类(原)
package com.isoftstone.core.util; import java.io.BufferedReader; import java.io.ByteArrayOutputStrea ...
- poj1988 Cube Stacking 带权并查集
题目链接:http://poj.org/problem?id=1988 题意:有n个方块,编号为1-n,现在存在两种操作: M i j 将编号为i的方块所在的那一堆方块移到编号为j的方块所在的那 ...
- curl 查看一个web站点的响应时间
1. curl 查看web站点 curl -o /dev/null -s -w "time_namelookup:%{time_namelookup}s\ntime_connect:%{ti ...
- libraries\include\boost-1_61\boost/regex/v4/perl_matcher.hpp(362): error C2292: 'boost::re_detail_106100::perl_matcher<const char *,std::allocator<boost::sub_match<const char *>>,boost::regex_traits<c
这个问题在Windows上基于CMake编译Caffe-SSD的GPU版时出现. 网上找到的博客贴出的解决办法是删掉regex和rv相关代码,甚至不编译detection_output_layer.c ...
- selenium爬取煎蛋网
selenium爬取煎蛋网 直接上代码 from selenium import webdriver from selenium.webdriver.support.ui import WebDriv ...
- 四、自动化平台搭建-Django-如何做验证码
前提:安装包 pip install pillow==3.4.1 1.打开booktest/views.py,创建视图verify_code. from PIL import Image, Ima ...
- JS与CSS那些特别小的知识点区别
1:target与currentTarget的区别 currentTarget指向的事件绑定的元素,target指向的是你点击的元素 2:attr与jprop在jQuery在API当中的区别 2.1: ...