`
沈冠军
  • 浏览: 111221 次
  • 性别: Icon_minigender_1
  • 来自: 玉林
社区版块
存档分类
最新评论

Struts2学习之表单验证

阅读更多

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官方例子7-表单验证 xml形式的验证

    在Struts2中,表单验证是非常重要的一个环节,它确保了用户输入的数据符合预设的规则,从而保证了应用程序的数据质量和安全性。本示例主要讲解的是使用XML文件进行表单验证的方法。 首先,让我们理解表单验证的基本...

    Struts2表单验证

    本文将深入探讨Struts2的表单验证机制。 首先,Struts2的输入验证分为两种方式:手动验证和使用验证框架。 **手动验证**主要包括两种方法: 1. **重写validate()方法**:这是最基础的方式,所有Action类都需要继承...

    struts的表单验证

    本文将深入探讨Struts中的表单验证,这是构建用户交互界面时一个至关重要的部分。 表单验证是在用户提交数据前检查输入的有效性,以确保数据的完整性和安全性。在Struts框架中,表单验证通常通过两个主要方式实现:...

    在Eclipse中配置Struts2项目(html)手把手教会你 +struts2 标签库介绍(html) + STRUTS2学习文档.pdf + Struts2―表单验证validate(html) + struts2和struts的比较 + struts教程(html)

    在Eclipse中配置Struts2...Struts2―表单验证validate(html)对validate的type属性校验类型以及param 做了详细的解释说明。 struts2和struts的比较 让你更清楚的知道struts2和struts的不同之处。 struts教程(html)

    Struts2极速表单验证框架(注解)

    在Struts2中,表单验证是确保用户输入数据准确性和完整性的关键部分。本篇将详细介绍Struts2的极速表单验证框架,特别是其注解方式的使用。 ### 1. 表单验证的重要性 在Web应用程序中,验证用户输入的数据是必不可...

    关于struts表单验证

    在Struts框架中,表单验证是一个关键环节,确保从用户端接收到的数据准确无误,符合应用的要求。本文将详细讲解Struts中的表单验证机制,包括ActionForm Bean的使用、validate()方法和reset()方法,以及如何处理验证...

    整合了struts2 jquery的formValidator表单验证的页面代码

    这个项目中的代码示例可以作为学习和参考,帮助开发者理解如何在实际项目中整合Struts2和jQuery的formValidator,提高表单验证的效率和用户体验。对于初学者来说,深入研究这个示例有助于掌握Struts2和jQuery在实际...

    struts结合js的表单验证

    本文将详细介绍如何在 Struts2 框架中利用 JavaScript(JS)进行客户端表单验证,并结合实际代码示例来解释具体的实现方式。 #### 一、基本概念 Struts2 是一个基于 Java 的企业级应用框架,它支持多种技术栈,...

    struts2 表单验证验证信息显示位置及效果

    这篇博客文章“Struts2 表单验证验证信息显示位置及效果”探讨了如何有效地实现和展示Struts2中的表单验证信息。 首先,Struts2提供了一种灵活的验证机制,包括Action级别的校验和ValidatorForm级别的校验。Action...

    struts2 表单验证 注册

    在Struts2中,表单验证是一个重要的功能,它确保了用户输入的数据符合我们设定的规则,从而提高应用程序的健壮性和用户体验。在注册场景中,表单验证尤为重要,因为它涉及到用户账户的安全性。 首先,让我们深入...

    Struts动态表单验证

    2. **表单验证的重要性** 表单验证是Web应用中必不可少的一环,用于确保用户提交的数据符合预设的规则,防止无效或恶意的数据进入系统。动态表单验证允许我们根据不同的场景或用户角色灵活地调整验证规则。 3. **...

    struts2表单验证

    在Struts2中,表单验证是处理用户输入数据的重要部分,确保数据的完整性和正确性。下面将详细讨论Struts2中的表单验证及其相关知识点。 一、Struts2表单验证概述 Struts2的表单验证分为客户端验证和服务器端验证。...

    李顺利Struts2表单验证后回显错误信息 标签使用

    总结来说,通过学习李顺利老师的Struts2表单验证后回显错误信息的教程,我们可以有效地利用Struts2提供的标签和OGNL表达式来创建用户友好的错误提示,提升Web应用的用户体验。同时,通过自定义样式和利用拦截器,...

    struts2简单的登陆验证

    这个"struts2简单的登陆验证"项目是一个基础入门级别的教程,适合初学者学习理解Struts2的核心概念和工作原理。 在Struts2中,登陆验证是常见的功能,涉及到用户身份的确认和权限控制。下面我们将详细探讨Struts2...

    Struts1.2动态表单注册 验证实例(2)

    然后,将ActionForm指向我们的UserBean,这样当用户提交表单时,Struts会自动调用Validator进行验证。 在JSP页面中,我们可以使用Struts标签库来展示错误消息,例如`&lt;html:errors&gt;`标签,它会显示所有验证失败的...

    struts表单验证讲解视频教程

    观看这个`.rmvb`视频,你将能够更直观地了解和学习Struts表单验证的全过程,包括具体步骤和实践操作。 总结,Struts表单验证是保证Web应用数据安全性和用户体验的重要手段。通过这个视频教程,你可以深入理解Struts...

    struts2 学习资料

    这个压缩包中包含的资源是学习Struts2的关键资料,帮助开发者深入理解和掌握这个框架。 首先,"struts2权威指南"是学习Struts2的核心参考资料,通常会涵盖框架的基本概念、核心组件、配置细节、MVC设计模式的应用...

    struts2(1-7)源码 struts2学习入门 源码学习

    struts7 制作一个表单,对表单中的内容进行自定义验证。 struts8 全局性的验证xwork.default.invalid.fieldvalue={0} error struts9 进行局部性的验证,使用struts2标签库对register.jsp进行改进 strrts10 第七讲...

    struts2登陆验证

    Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级Web应用程序。它的核心是Action和Result,提供MVC(Model-View-Controller)架构模式,帮助开发者实现清晰的业务逻辑和视图分离。在Struts2中,登录验证...

Global site tag (gtag.js) - Google Analytics