校验输入的都是数字 java 输入输出数据校验
转载
十三、用户输入数据的校验
1、校验方式:
a:客户端校验。(防君子不防小人)在页面中写js脚本。
输入错误的话提醒比较及时;
减轻服务器的压力
b、服务器端校验。
数据安全
开发中:a+b
2、服务器端校验:
- 编程式校验:自己编写一个校验代码(缺点:验证规则都写在了代码中)
前提:动作类继承ActionSupport。
1、针对动作类中的所有动作进行校验
//针对所有的动作方法进行校验
publicvoid validate() {
//校验规则:如果出现不符合条件的,向一个Map<String, String>
//中 key:字段名 value:错误消息
ifStringUtils.isEmpty(username)) {//null 或者"",都返回true
this.addFieldError("username", "用户名不能为空");
}
}
|
- 针对指定的动作进行校验 方式一:写了一个validate方法,可以在不需要验证的动作方法前,使用
@SkipValidation//带有此注解的动作方法会被忽略验证
public String registUI() {
returnSUCCESS;
}
|
方式二:validate方法有一定的书写规范。public void validate动作方法名(首字母大写)
publicvoid validateRegist() {
//校验规则:如果出现不符合条件的,向一个Map<String, String>
//中 key:字段名 value:错误消息
if (StringUtils.isEmpty(username)) {//null 或者"",都返回true
this.addFieldError("username", "用户名不能为空");
}
}
|
总结:所有验证不通过或转换不同的过的,框架都会转向name="input"的结果视图。要显示错误提示,
使用<s:fieldError/>标签,显示字段有关的错误提示
1、针对动作类中的所有动作进行校验
在动作类所在的包中,建立一个名称为:"动作类名-validation.xml"配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE PUBLIC
"-//Apache Struts//XWork Validator Definition 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">
<validators>
<!--验证字段名是哪个 -->
<field name="username">
<!--指定验证器:requiredstring:不能是null,也不能是"",还不能全部是空格 -->
<field-validator type="requiredstring">
<message>用户名不能为空</message>
</field-validator>
</field>
</validators>
|
说明:dtd约束在何处--->xwork-core-**.jar包中
校验器的类型:也就是代码:以下代码中type的值
<field-validator type = "requirestring"> <field-validator>
常用的校验器有以下几种类型:
1.require:要求被校验的属性值不能为null
2.requiredstring:要求被校验的属性值不能为null,也不能为空字符串,
默认情况下会先去除属性的前后空格之后再进行判断
3.stringlength(字符串长度校验器,要求被校验的属性值必须在指定的范围内,
否则校验失败,minLength参数指定最小长度,maxLength参数指定最大长度,trim参数指定校验field之前是否去除字符串前后的空格)
4. email(邮件地址校验器,要求如果被校验的属性值非空,则必须是合法的邮件地址) 5. regex(正则表达式校验器,检查被校验的属性值是否匹配一个正则表达式,
expression参数指定正则表达式,caseSensitive参数指定进行正则表达式匹配时,是否区分大小写,默认值为true)
6. int(整数校验器,要求field的整数值必须在指定范围内,min指定最小值,max指定最大值)
7. double(双精度浮点数校验器,要求field的双精度浮点数必须在指定范围内,min指定最小值,max指定最大值)
8. date(日期校验器,要求field的日期值必须在指定范围内,min指定最小值,max指定最大值) 等等……
9. expression(OGNL表达式校验器,它是一个非字段校验器,
expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,
返回true时校验通过,否则不通过,该校验器不可用在字段校验器风格的配置中)
|
- 针对指定的动作进行校验 方式一:使用@SkipValidation
方式二:声明文件遵循一定的书写规范:
动作类名-动作名(struts.xml配置文件中的)-validation.xml - struts2框架内置的声明式类型验证器 xwork-core-**.jar的
com.opensymphony.xwork2.validator.validators中的default.xml中
给验证器注入参数:
<field name="username">
<field-validator type="requiredstring">
<message>用户名不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">8</param>
<param name="minLength">6</param>
<message>用户名长度介于${minLength}~${maxLength}个字符之间</message>
</field-validator>
</field>
|
自定义声明式校验
验证密码的强度
开发步骤:
- Validator接口或者继承ValidatorSupport。如果是验证表单字段有关,建议继承FieldValidatorSupport。
publicclassextends FieldValidatorSupport {
// object 就是动作类
@Override
publicvoidobject) throws ValidationException {
// 字段名
fieldName = getFieldName();
// 获取封装到动作类中的对应的字段值
fieldValuefieldName, object);
iffieldValuenull) {
return;
}
// 如果该字段不够强壮,就添加错误信息
iffieldValue)) {
fieldName, object);
}
}
}
|
-
要注册校验器
在WEB-INF\classes目录下,建立一个固定名称为validators.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE PUBLIC
"-//Apache Struts//XWork Validator Definition 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">
<validators>
<!--注册校验器 -->
<validator name="strongpassword"
class="com.itheima.validator.StrongPasswordValidator" />
</validators>
|
可以像使用requiredstring这样的验证器来使用了
<field name="password">
<field-validator type="requiredstring">
<message>密码不能为空!</message>
</field-validator>
<field-validator type="stringLength">
<param name="maxLength">8</param>
<param name="minLength">5</param>
<message>密码长度介于${minLength}~${maxLength}个字符之间</message>
</field-validator>
<!-- 使用自定义的校验器 -->
<field-validator type="strongpassword">
<message>密码不够强壮</message>
</field-validator>
</field>
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。