1、前言
web应用程序,在很多地方都需要对数据进行验证,验证后,给用户一些提示的信息,尽量让用户知道那些信息有误,对输入信息的认证,可以在前台,也可以在后台,在前台可以用js来实现,在后台呢,也可以,如果要自己学验证方法的话
写是可以写出来,但是很繁琐,都一些if和else语句,基于这种考虑,struts提供了很一套很好的验证体系。
这个验证功能要用到上一篇编写的代码,只是修改部分代码,和添加必需的代码。
2、strut验证的种类
strut验证的方式可以说是挺多中的,下面是一些常用的方法。
(1)在继承ActionSupport的动作类中重写validate()方法,至于如何验证,那就是自己编写代码的事情了,由于
承了ActionSupport这个类,而这个类中有几个处理动作错误的方法。如下:
1)addActionError(String anErrorMessage),当动作请求错误时,可以把需要显示给用户的信息添加进去,
在前台则采用struts内置的标签<s:actionerror/>就可以把在后台添加进来的信息实现给用户了。
2)addActionMessage(String aMessage),这个方法可以将需要显示的信息显示给用户,在前台采用标签
<s:actionmessage/>来显示相关的信息。
3)addFieldError(String fieldName,String errorMessage),这个方法是在字段类型输入不正确时候用到,
在前台用<s:fielderror/>就可以将我们在后台添加的错误信息显示给用户看了。
(2)如果表单使用的标签都是struts内置的话,那么当用户输入的数据类型不合法时,在后台无法进行自动转换时,
它会自动提示给用户Invalid field value for field "fieldName",虽然可以提示,但是总感觉这个提示太过于笼
统,用户可能也不理解。这很好解决,struts程序员也想到了这点,这时,我们只要编写一个properties文件就
可以改变显示的内容信息了,它的格式是,名字actionName.properities,这个文件要和对应的动作类在同一个
目录下,其中的actionName就是动作类的名字,这个文件的内容也有特定的格式,invlid.fieldvalue.字段名
="自己想显示的内容", 例如,在前台有个name="age"的输入框,那么就应该写
invalid.fieldvalue.age="请输入整数类型".
(3)由于struts内嵌了xwork框架,所以它支持xwork提供的专业的数据验证体系,其实我们需要做的很事情很少
只需要编写一个xml文件,xwork会自动调用内部的方法为我们验证。命名规则是:ActionName-validation
.xml,也要把这个文件放到对应的动作类目录下。
3、用实例来说话,源码和上一篇的博客一样,下面是需要修改的。
(1)对应上边的第一种方法。
在RegisteAction类中重写ActionSupport的validate()方法,如下
public void validate(){
if(username==null||username.length()<6||username.length()>12){
this.addActionError("用户名无效");
}
if(password==null){
this.addActionError("密码不能为空");
}
if(repassword==null){
this.addActionError("确认密码不能为空");
}
if(password!=null&&repassword!=null&&password.equals(repassword)){
this.addActionError("两次输入的密码不一致");
}
if(birthday!=null&&graduated!=null){
if(graduated.before(birthday)){
this.addActionError("毕业日期不能在出生日期之前");
}
}
if(point==null){
this.addActionError("坐标不能为空,输入的两个数字要以逗号隔开");
}
}
在registe2.jsp中输入如下:
提交后,显示如下:
说明:可以看到,在顶部有黑点的提示信息就是在RegisteAction2类中的validate方法中编写的,在前台用了
<s:actionerror/>标签显示出来,由于这个表单的标签都是采用struts内置的,所以当输入的类型与后
台不匹配时,它会自动提示错误信息,但是这样的信息用户是很难看懂的。
(2)对应上边的第二种方法,改变显示的内容,显示一些用户容易看懂的信息。
创建一个properties文件,文件名为RegistAction.properties,由于采用的编码不一样,所以在可视化界面
时是如下:
点击源码设计时如下:
invalid.fieldvalue.username=\u7528\u6237\u540D\u4E0D\u53EF\u7528
invalid.fieldvalue.password=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
invalid.fieldvalue.birthday=\u51FA\u751F\u65E5\u671F\u4E0D\u53EF\u7528\uFF0C\u683C\u5F0F\u5982\uFF1A2011-03-05
invalid.fieldvalue.graduate=\u6BD5\u4E1A\u65E5\u671F\u4E0D\u53EF\u7528\uFF0C\u683C\u5F0F\uFF1A2011-04-05
invalid.fieldvalue.point=\u5750\u6807\u4E0D\u53EF\u7528\uFF0C\u683C\u5F0F\u5982\uFF1A3\uFF0C4
都是一些我们看不懂的信息,但是没有关系,添加了这个文件后,
现在再看看效果:
提示的信息确实改变了,这就是RegisteAction.properties文件起到的效果。
(3) 采用xwork框架内置的验证机制
RegisteAction-validation.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim"></param>
<message>请填写字符类型</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">6</param>
<param name="minLength">20</param>
<message>长度在6到20个字符之间</message>
</field-validator>
<field-validator type="required">
<param name=""></param>
<message>用户名不能为空</message>
</field-validator>
</field>
<field name="birthday">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2012-12-12</param>
<message>出生时间在${min}和${max}之间</message>
</field-validator>
</field>
</validators>
说明:这个文件的标签有很多,不可能把它全都背下来,学习得有技巧,我们可以查看xwork类库下的源码,里面有
很详细的属性,它的位置如下图所示:
点击default.xml这个文件,显示的内容如下:
说明:这个文件一目了然,name属性对应于ActionName-validation.xml中的
<field-validator type="requiredstring">的type值,而<param name="trim"></param>中的
name属性从哪里来呢,那就得找到上边对应的类,里面有什么属性,这个name类里面就可以填写什么。
好了,看看效果吧,在看效果前,我先把自己在RegisteAction中的validate方法中编写的验证方法注释掉。
效果如下:
一样可以验证,当然xwork还提供了很多类型数据的验证,比如邮件,url等的验证,如果要我们自己编写的话,
考虑的可能不是很周到,但是利用内置的验证,则可以很好得给用户提示信息。
4、小结一下:
strut的验证方法有很多,也很全面,各种验证方法可以同时存在,在适当的时候适当的地方选择适当的验证才是最好
的方法。
- 大小: 3.4 KB
- 大小: 10.7 KB
- 大小: 3.7 KB
- 大小: 10.6 KB
- 大小: 12.8 KB
- 大小: 35.4 KB
- 大小: 8.7 KB
分享到:
相关推荐
浅谈 Struts2 表单验证
struts2官方例子7-表单验证 xml形式的验证,主要是在相应的action类旁,新建一个对应的xml文件,进行验证
在Eclipse中配置Struts2...Struts2―表单验证validate(html)对validate的type属性校验类型以及param 做了详细的解释说明。 struts2和struts的比较 让你更清楚的知道struts2和struts的不同之处。 struts教程(html)
关于struts表单验证,关于struts表单验证,关于struts表单验证,
整合了struts2 jquery的formValidator表单验证的页面代码, 包含验证用户是否存在,提交表单等
struts2 表单验证 注册 数据库操作
Struts2表单验证后回显错误信息 标签使用 李顺利Struts2表单验证后的错误信息显示格式-样式大全
Struts2_极速表单验证框架使用说明书.pdf
struts2表单验证
struts7 制作一个表单,对表单中的内容进行自定义验证。 struts8 全局性的验证xwork.default.invalid.fieldvalue={0} error struts9 进行局部性的验证,使用struts2标签库对register.jsp进行改进 strrts10 第七讲...
NULL 博文链接:https://zhengbocong.iteye.com/blog/1961354
struts2 中,在JSP页面里,写入JS用来验证客户端提交的信息,还有一些正则表达式的用法。
主要讲解了在Struts中流行的运用Validate技术对表单的各个字段进行动态的验证。附带有项目。
博文链接:https://nassir.iteye.com/blog/1601195
myeclipse 6.5 + struts2 +ajax 实现表单注册验证源码
运行平台MyEclipse 用struct1.2 实现最基本的功能 动态表单 验证框架的注册实例
Struts1.2动态表单验证
struts1使用actionform实现表单验证,表单验证失败追加信息。
详细说明struts如何进行表单验证
视频教程 struts表单验证讲解 如何验证表单数据