`

struts2校验框架使用总结

 
阅读更多
这些天一直在赶手上做的那个游戏平台项目.怎么说呢,狭小的空间范围内碌碌无为的忙碌着.隔三两头时不时还遭到老大的"鄙视".经过几天的奔跑,经过大家几天的努力,完成了小阶段性的目标.下午的时间也终于可闲下来了.认真来看了下代码的流程.代码的实现,代码的风格.虽然不是很好,但也是我一个一个字母敲上去的.实践是检验真理的唯一途径,实践才是一切标准.实践才能为之提高,实践才能为之进步.但大到一季度,小到一天,不同阶段,不同时期的总结是人一生不可或缺的过程.总结中成长,成长中实现人生价值.
今天就来说说struts2的验证框架(validate).Struts校验框架提供了一种不用编写代码,只需修改配置文件即可对输入进行校验的功能。代码方式校验,即重写validate()方法。实际应用中,validate()与校验框架一般只选其一。
1.struts对于数据的校验
int
整数
double
实数
expression
两数的关系比较
email
邮箱地址
url
检查输入是否为url格式
visitor
使用预定义的validators进行验证
conversion
检查是否将出现数据转换错误
regex
检查是否能匹配到正则表达式
required
用于检查值是否为null
requiredstring
用于检查string是否为null或空
stringlength
检查string的长度是否在某个范围
date
检查date的范围

<validators>
	<validator type="requiredstring">
		<param name="fieldName">buyer.username</param>
		<param name="trim">true</param>
		<message>必须输入用户名</message>
	</validator>
	<validator type="regex">
		<param name="fieldName">buyer.username</param>
		<param name="expression"><![CDATA[(\w{6,20})]]></param>
		<message>用户名长度必须为6至20之间</message>
	</validator>

	<validator type="requiredstring">
		<param name="fieldName">buyer.password</param>
		<param name="trim">true</param>
		<message>必须输入密码</message>
	</validator>
	<validator type="regex">
		<param name="fieldName">buyer.password</param>
		<param name="expression"><![CDATA[(\w{6,20})]]></param>
		<message>密码长度必须为6至20之间</message>
	</validator>
	
	<validator type="regex">
		<param name="fieldName">buyer.repassword</param>
		<param name="expression"><![CDATA[(\w{6,20})]]></param>
		<message>确认密码长度必须为6至20之间</message>
	</validator>
	 <validator type="fieldexpression">
		<param name="fieldName">buyer.repassword</param>
		<param name="expression"><![CDATA[(buyer.repassword==buyer.password)]]></param>
		<message>密码和确认密码必须一致</message>
	</validator>
	
	 <validator type="requiredstring">
		<param name="fieldName">buyer.email</param>
		<param name="trim">true</param>
		<message>必须输入邮箱地址</message>
	</validator>
	<validator type="regex">
		<param name="fieldName">buyer.email</param>
		<param name="expression"><![CDATA[(^\+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(\.|\-))+[a-z]{2,6}$)]]></param>
		<message>邮箱格式不对</message>
	</validator>
	
	<validator type="regex">
		<param name="fieldName">buyer.idiograph</param>
		<param name="expression"><![CDATA[(\w{6,20})]]></param>
		<message>个性签名长度必须为6至20之间</message>
	</validator>
	
	<!--<validator type="requiredstring">
		<param name="fieldName">buyer.blogtitle</param> 
		<param name="trim">true</param>
		<message>必须输入博客标题</message>
	</validator>
	-->
	<validator type="regex">
		<param name="fieldName">buyer.blogtitle</param>
		<param name="expression"><![CDATA[(\w{6,20})]]></param>
		<message>博客标题长度必须为6至20之间</message>
	</validator>
	
	<field name="buyer.regTime">
		<field-validator type="required">
			<message>必须输入注册时间</message>
		</field-validator>
		<field-validator type="date">
			<param name="min">2011-05-25</param>
			<message>广告投放时间必须介于${min}之后!!!</message>
		</field-validator>
	</field>

2.说明:校验框架有两种校验方式:field和validator, 字段校验一般用field 非字段一般用validator(其实两者都可以)
  
A.field校验:先指定需要校验的属性,在指定校验方式.
B.validator校验:先指定校验方式,再指定需要校验的属性.两种方式是等价的.
C.验证错误将默认产生FieldError.
D.short-circuit="true":一个校验失败,是否是继续执行后续校验.
E.对于相同属性的FieldError,validate()方法中的验证和RegisterAction-validation.xml中的验证都会执行,并且FieldError都会显示。
执行顺序: RegisterAction-validation.xml => validate()

只对action中的某个方法进行校验
-1-
     需要校验的Action名 + -方法名 + -validation.xml
                                      |
                       对应xml中<action>的属性的name值
 如: RegisterAction-add-validation.xml 
       --对应 /add.action   --对RegisterAction中的add()方法进行校验
-2-
     在不需要进行验证的方法加上annotation,即在方法前加上@SkipValidation。
-3-
   <action name=...>
        <interceptor-ref name="defaultStack">   
             <param name="validation.excludeMethods">*</param>   
             <param name="validation.includeMethods">需要验证的方法名称,以逗号分隔</param>
        </interceptor-ref>  
   </action>

校验顺序
    如果既提供了RegisterAction-validation.xml,又提供了RegisterAction-add-validation.xml
    Struts2会先校验RegisterAction-validation.xml,然后再去校验RegisterAction-add-validation.xml这两个都会被调用

建议:
    当有多个逻辑方法时,就不要提供RegisterAction-validation.xml
    只提供相应方法的xml文件,如:RegisterAction-execute-validation.xml
  field校验:
<field name="name">
    <field-validator type="requiredstring" >
        <param name="trim">true</param>
        <message>name required</message>
    </field-validator>
    <field-validator type="stringlength">
        <param name="trim">true</param>
        <param name="minLength">6</param>
        <param name="maxLength">10</param>
        <message>name length range : ${minLength} ~ ${maxLength}</message>
    </field-validator>
</field>

validator校验:
<validator type="requiredstring">
    <param name="fieldName">name</param>
    <param name="trim">true</param>
    <message>name required</message>
</validator>
<validator type="stringlength">
    <param name="fieldName">name</param>
    <param name="trim">true</param>
    <param name="minLength">6</param>
    <param name="maxLength">10</param>
    <message>name length range : ${minLength} ~ ${maxLength}</message>
</validator>

3.Struts2客户端校验
    设置struts标签<s:form>中validate="true"。这样就会根据RegisterAction-validation.xml生成页面Javascript,在客户端执行校验

4.FieldError和ActionError的实现
a.真正存放field级别错误信息的对象是LinkedHashMap。
b.该LinkedHashMap的key是String类型的,value是ArrayList类型,所以同一个key可以对应多个错误消息。
c.对于Action级别的错误信息,实际上是放置在ArrayList中的

分享到:
评论

相关推荐

    struts2校验框架使用心得.txt

    ### Struts2校验框架使用心得 #### 一、Struts2校验框架概述 Struts2是一款基于Java的企业级Web应用开发框架,它能够帮助开发者构建出结构清晰、易于维护的应用程序。其中,Struts2提供的校验框架是其核心特性之一...

    Struts2校验框架应用

    Struts2作为一款流行的Java Web开发框架,提供了一套强大的校验框架,使得开发者能够方便地对用户输入数据进行验证,确保数据的准确性和安全性。本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、...

    struts2验证框架

    Struts2 验证框架详解 Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制...

    struts2验证框架示例

    在Struts2中,验证框架是其核心特性之一,它允许开发者对用户输入的数据进行校验,确保数据的完整性和安全性。这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下...

    struts2验证框架简单实例

    本实例将带你深入理解Struts2验证框架的使用,以及在实际操作中可能遇到的问题和解决方案。 首先,Struts2的验证框架主要基于两个组件:`Validation`和`Validator`。`Validation`是Action类的注解,而`Validator`则...

    struts2验证框架简单示例

    在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...

    struts2校验框架

    为了使Struts2框架能够识别到这些校验规则,需要在对应的Action类中指定使用这些校验规则。通常情况下,Struts2会根据Action类名来查找相应的`validation.xml`文件。 例如,对于一个名为`UserAction`的Action类,其...

    Struts2输入校验总结

    综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。

    struts2 校验框架

    Struts2的校验框架基于Apache Commons Validator,提供了多种预定义的验证器类型以及自定义验证器的功能。这些验证器可以在配置文件中或代码中定义,用于检查表单字段的有效性。 #### 三、示例分析 ##### 1. 配置...

    Struts2 校验器

    8. **整合其他验证框架**:除了内置的验证功能,Struts2还可以与Hibernate Validator、JSR 303/JSR 349等Java Bean Validation标准进行集成,以利用更丰富的验证约束。 总之,Struts2的校验器是其强大功能的一部分...

    Struts2自定义校验框架

    Struts2提供了内置的验证框架,允许开发者自定义校验规则,以满足特定业务需求。下面将详细介绍Struts2自定义校验框架的相关知识点。 1. **Struts2验证框架概述** Struts2的验证框架主要负责处理用户提交的数据,...

    struts2输入校验深入总结

    Struts2作为一款流行的...通过以上对Struts2输入校验的深入总结,我们可以看到Struts2为开发者提供了灵活多样的校验方式,能够满足不同场景下的需求。了解并熟练掌握这些校验机制,有助于提升应用程序的质量和安全性。

    struts1验证框架相当好的经典例子

    下面将详细介绍Struts1验证框架的使用。 首先,我们来看一下如何设置Struts1的验证框架。在`struts-config.xml`配置文件中,你需要定义一个`form-bean`,这代表一个表单 Bean,例如`userValidateForm`,并指定其...

    使用Struts2校验框架完成输入校验

    2、用户名只能使用数字或者字母,长度为6~20之间; 3、密码、确认密码必须是数字和字母,长度为6~20之间; 4、密码、确认密码必须相同; 5、收入必须在0.001~10000.000之间; 6、年龄必须是整数且必须在0~120...

    struts2验证框架的使用和扩展

    本文将深入探讨Struts2验证框架的使用和扩展。 1. **Struts2验证框架基础** - **Action与Validator**: 在Struts2中,Action类是业务逻辑的载体,Validator则用于验证Action中的字段。通过在Action类中定义需要验证...

    struts2框架的使用

    在本压缩包中,你可能会找到关于Struts2框架配置和使用的一些关键文件,这将帮助你在未来回顾或重新学习Struts2时快速上手。 首先,让我们深入了解一下Struts2的核心概念: 1. **Action类**:在Struts2中,业务...

Global site tag (gtag.js) - Google Analytics