struts数据校验

一、数据校验分为两种类型

1、客户端校验;2、服务端校验。客户端的数据校验一般是在HTML页面中使用JavaScript校验。

二、服务端校验有三种

1、使用业务逻辑处理方法校验,即在execute()中添加校验代码,缺点是:a、校验代码和业务逻辑代码混合,程序的可读性差,增加维护难度;b、必须显示指明出错时的结果;

2、使用validate或validateXxx方法校验。优点:a、校验代码和业务逻辑代码分开,程序的可读性和维护性都较好;b、校验出错,自动跳转到input结果。缺点:a、当校验代码比较多时,会使得validate()程序很臃肿,对管理和维护增加难度。

3、使用Struts2校验框架校验(xwork)。Struts2校验框架的校验有两种校验配置:字段校验和非字段校验。二者的区别:

 非字段校验:先指定校验器:由谁来校验,来校验谁!

字段校验器:先指定校验的属性:我来校验谁,由谁来校验!

三、字段校验实验步骤

1、创建Struts2项目。(不会的请看http://www.cnblogs.com/yexiaodong/p/3585050.html)

2、创建动作类RegisterAction,包括的成员变量有:userName(String)、password(String)、repassword(String)、birthday(Date)和email(String)。

3、创建两个JSP页面,分别用于输入用户的名字、密码、确认密码、年龄、生日和email的注册页面以及用于显示用户注册时输入的合法信息的页面,保存目录为WebRoot

4、编写动作类资源属性文件RegisterAction.properties(该文件跟动作类保存在同一个包下就行了,不需要额外的配置)

5、创建xml校验配置文件,要求对注册页面中的表单域进行如下校验:

a、用户名:不许为空,而且长度在2至6之间

b、密码:不允许为空,且必须是字母或数字,同时长度必须在4~15之间

c、确认密码:必须和密码一致

d、年龄:必须是整数,且必须在1~150之间

f、生日:必须是日期类型,且必须在1980-01-01和2011-01-01之间

g、Email:必须符合email格式

四、核心代码:

RegisterAction-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<!-- 
项目名称:javaII-6
包名:com.sise.ye.action
文件名:RegisterAction-validation
创建人:叶晓东
创建时间:2014.4.7
描述:注册页面的校验
备注:
@version 1.0
 -->
<validators>
 <!-- 用户名 -->
 <field name="userName">
   <field-validator type="requiredstring">
    <message key="errors.name.requiredstring"/>
   </field-validator>
   <field-validator type="stringlength">
    <param name="minLength">2</param>
    <param name="maxLength">6</param>
    <message key="errors.namelength"/>
   </field-validator>
 </field>
 <!-- 密码 -->
 <field name="password">
   <field-validator type="requiredstring">
    <message key="errors.password.requiredstring"/>
   </field-validator>
   <field-validator type="regex">
     <param name="regexExpression"><![CDATA[(\w{4,15})]]></param>
     <message key="errors.password"/>
   </field-validator>
 </field>
 <!-- 确认密码 -->
 <field name="repassword">
   <field-validator type="requiredstring" short-circuit="true">
     <message key="errors.password.requiredstring"></message>
   </field-validator>
   <field-validator type="fieldexpression">
     <param name="expression"><![CDATA[password==repassword]]></param>
     <message key="errors.passwordequals"></message>
   </field-validator>
 </field>
 <!-- 年龄 -->
 <field name="age">
 <field-validator type="int">
   <param name="min">1</param>
   <param name="max">150</param>
   <message key="errors.age"/>
 </field-validator>
 </field>
 <!-- 出生年月 -->
 <field name="birthday">
 <!--  
  <field-validator type="requiredstring">
  <message key="errors.birthday.required"/>
  </field-validator>
  -->
  <field-validator type="date">
    <param name="min">1980-01-01</param>
    <param name="max">2011-01-01</param>
    <message key="errors.birthday"/>
  </field-validator>
 </field>
 <!-- email -->
 <field name="email">
  <field-validator type="requiredstring">
   <message key="errors.email.required"></message>
  </field-validator>
  <field-validator type="email">
    <message key="errors.email"/>
  </field-validator>
 </field>
</validators>

代码分析:

<validators>为根元素,所有的校验都放在里面。

<field>中的属性name设置了校验的属性,里面放在该属性的规则

<field-validator>中的属性type设置了校验器

<param>指定校验过程中使用到的参数

<message>校验不成功返回时的提示,国际化或有配置文件时使用key属性。

RegisterAction.properties

 

 

五、总结

数据校验的时候如果是使用正则表达式需要注意2.3.16这个版本中的参数名作了修改,不是"expression",而是"regexExpression"。

六、代码下载

http://download.csdn.net/detail/yy228313/7160501

 

posted @ 2014-04-08 13:08  SeatonYexd  阅读(319)  评论(0编辑  收藏  举报