基于XML配置方式实现输入校验
1、建立Jsp页面,定义需求
* 用户名不能为null ,""
* 密码不能为null, "" 并且密码的长度6-12之间
2、定义Action
* 要继承ActionSupport或者实现Validateable接口:
3、配置struts_validate.xml文件
* 验证出错转向的页面
struts.xml配置<resultname=“input”>/validate/loginxml.jsp</result>
其中input转向是在action中已经定义好的.
4、配置验证的xml文件
* 验证的xml文件的规范在xwork-core-2.3.1.1.jar包下的:xwork-validator-1.0.3.dtd
* 验证文件的命名
* 在这个校验文件中,对action中字符串类型的username属性进行验证,
首先要求调用trim()方法去掉空格,然后判断用户名是否为空。
* 该文件需要和action类放在同一个包下,文件的取名应遵守
ActionClassName-validation.xml规则,其中ActionClassName为action
的简单类名,-validation为固定写法。
* 例如:如果Action类为cn.itcast.validate.ValidateXmlAction. 那么该文件
的取名应为:ValidateXmlAction-validation.xml
* ValidateXmlAction-validation.xml为文件的配置如下
基于XML配置方式对指定action方法实现输入校验
当校验文件的取名为ActionClassName-validation.xml时,会对 action中的所有处理方法实施输入验证。
如果你只需要对action中的某个action方法实施校验,那么,校验文件的取名应为:ActionClassName-ActionName-validation.xml,其中ActionName为struts.xml中action的名称。例如:在实际应用中,常有以下配置:
<actionname="user_*" class="cn.itcast.action.UserAction" method="{1}">
<resultname="success">/WEB-INF/page/message.jsp</result>
<resultname="input">/WEB-INF/page/addUser.jsp</result>
</action>
UserAction中有以下两个处理方法:
publicString add() throws Exception{
....
}
publicString update() throws Exception{
....
}
要对add()方法实施验证,校验文件的取名为: UserAction-user_add-validation.xml
要对update()方法实施验证,校验文件的取名为: UserAction-user_update-validation.xml
Struts2 内建的验证程序
required: 确保某给定字段的值不是空值null
requiredstring: 确保某给定字段的值既不是空值null, 也不是空白.
trim 参数. 默认为true, 表示struts 在验证该字段值之前先剔除前后空格.
stringlength: 验证一个非空的字段值是不是有足够的长度.
minLength: 相关字段的最小长度. 若没有给出这个参数, 该字段将没有最小长度限制
maxLength:相关字段的最大长度. 若没有给出这个参数, 该字段将没有最大长度限制
trim: 在验证之前是否去除前后空格
int:检查给定字段的值是否可以被转换为一个整数
min: 相关字段的最小值. 若没给出这个参数, 该字段将没有最小值限制
max: 相关字段的最大值. 若没给出这个参数, 该字段将没有最大值限制
date: 确保某给定日期字段的值落在一个给定的范围内
max:相关字段的最大值. 若没给出这个参数, 该字段将没有最大值限制
min:相关字段的最小值. 若没给出这个参数, 该字段将没有最小值限制
email: 检查给定String 值是否是一个合法的email
url: 检查给定String 值是否是一个合法的url
regex: 检查某给定字段的值是否与一个给定的正则表达式模式相匹配.
expresssion*: 用来匹配的正则表达式
caseSensitive: 是否区分字母的大小写. 默认为true
trim: 是否去除前后空格. 默认为true
conversion(转换校验器,指定在类型转换失败时,提示的错误信息)
visitor(用于校验action中的复合属性,它指定一个校验文件用于校验复合属性中的属性)
expression(OGNL表达式校验器,expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过,该校验器不可用在字段校验器风格的配置中)
double(双精度浮点数校验器,要求field的双精度浮点数必须在指定范围内,min指定最小值,max指定最大值)
例
required 必填校验器
<field-validatortype="required">
<message>性别不能为空!</message>
</field-validator>
requiredstring 必填字符串校验器
<field-validatortype="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空!</message>
</field-validator>
stringlength:字符串长度校验器
<field-validatortype="stringlength">
<param name="maxLength">10</param>
<param name="minLength">2</param>
<param name="trim">true</param>
<message><![CDATA[产品名称应在2-10个字符之间]]></message>
</field-validator>
int:整数校验器
<field-validatortype="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄必须在1-150之间</message>
</field-validator>
字段OGNL表达式校验器
<fieldname="imagefile">
<field-validator type="fieldexpression">
<paramname="expression"><![CDATA[imagefile.length() <= 0]]></param>
<message>文件不能为空</message>
</field-validator>
</field>
email:邮件地址校验器
<field-validatortype="email">
<message>电子邮件地址无效</message>
</field-validator>
regex:正则表达式校验器
<field-validatortype="regex">
<paramname="expression"><![CDATA[^13\d{9}$]]></param>
<message>手机号格式不正确!</message>
</field-validator>
基于XML校验的一些特点
当为某个action提供了ActionClassName-validation.xml和ActionClassName-ActionName-validation.xml两种规则的校验文件时,系统按下面顺序寻找校验文件:
1。AconClassName-validation.xml
2。ActionClassName-ActionName-validation.xml
系统寻找到第一个校验文件时还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有校验规则汇总,然后全部应用于处理方法的校验。如果两个校验文件中指定的校验规则冲突,则只使用后面文件中的校验规则。
当action继承了另一个action,父类action的校验文件会先被搜索到。假设UserAction继承BaseAction,UserAction在struts.xml的配置如下:
<actionname="user" class="cn.itcast.action.UserAction" method="{1}">
.....
</action>
访问上面名为user的action,系统先搜索到BaseAction-validation.xml, BaseAction-user-validation.xml,接着搜索到UserAction-validation.xml, UserAction-user-validation.xml。校验规则是这四个文件的总和。
总结
struts2框架验证(xml方式):
* 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法
* 创建一个xml格式验证文件:
* 命名方式:ActionClassName-validation.xml,ActionClassName指的是动作类action的名称
* <validators>标签:根元素
* field:指定action中要校验的属性,实际上就是页面中表单的name属性的值
* name:指定页面中表单的name属性的值
* field-validator:指定验证规则
* type:指定验证规则名称,
struts2框架提供的验证规则放在xwork-core-xxx.jar
下的com\opensymphony\xwork2\validator\validators
的default.xml配置文件。
* param:向底层的验证规则传递的参数
* message:验证失败时,提供的错误提示信息
* 如果要对指定方法进行验证的话:
* xml验证文件的命名方式:ActionClassName-ActionName-validation.xml,
ActionName对应的是struts.xml文件对应的action标签的name属性的值