一:三种校验的方式

  1、用validate()方法实现数据校验  

  2、用execute()方法实现数据校验 

  3、用validateXxx()方法实现数据校验


1、用validate()方法实现数据校验

  继承ActionSupport类,该类实现了Validateable接口,该接口中定义了一个validate()方法,在自定义的Action类中重写validate()方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldErrors域中,然后通过OGNL表达式负责输出。

关键代码:

接口中validate()方法:

struts.xml配置:

regist.jsp:

实现效果:

 


2、用execute()方法实现数据校验

  继承自ActionSupport类,重写execute()

 唯一不同之处就是:把判断全放在excute方法中,比较繁琐,一般不怎么用。

  


3、用validateXxx()方法实现数据校验

  在validate()方法中对数据验证是可以工作的,如果在字段非常多的情况下,而且每个字段又有很复杂的验证,那么我们的validate方法中的代码会越来越多。  针对特定的方法输入的数据的验证我们把他放到validateXxx方法中,Xxx是方法名的首字母大写形式。

struts.xml配置中:

 实现效果:


二.框架校验:

  struts2的验证框架实现数据校验:

为什么要用验证框架:

 当验证规则比较复杂时,Action类的代码将变得很繁琐,假如我们要对电话号码的格式进行验证,是非常麻烦的。

验证框架的优点:

Struts2中内置了一个验证框架,将常用的验证规则进行了编码实现,使用验证框架时,用户无需再进行编码,只要在外部配置文件中指定某个字段需要进行的验证类型,并提供出错误信息即可,从而大大减轻了开发者的负担,提高开发效率

命名规范:

文件的命名规则:

  ActionName-validation.xml,ActionName为需要校验的Action类名,如:UserAction-validation.xml

  文件存放路径:

 该文件与Action类的class文件位于同一个路径下

  文件格式:包括如下3个配置元素

   <field>: 为每一个需要校验的字段添加一个验证元素<field>,name属性表示要校验的字段名。

       <field-validator>: 使用该元素来指定校验规则,type属性为校验规则名

       <message>: 使用该元素来指定校验出错时要显示的标签,key属性指向资源文件中的标签名

常用验证规则:

实现数据校验的流程:  

   对输入的数据首先进行类型转换,并封装成Action属性

  ② 如果类型转换出现错误,就将错误提示保存到ActionContext,并封装到fieldError中

  ③ 类型转换执行完毕后,会根据项目的配置执行验证框架的校验,也可能通过执行validate()或者validateXxx()方法进行校验

  ④ 如果经过以上步骤都没有出现错误,那么将直接调用Action里用于处理用户请求的方法,然后根据结果类型转入相应的视图资源。一旦出现了错误,那么系统将直接返回输入数据的视图资源,后者通常由workflow拦截器处理。

如下图所示:


UserAction-validation.xml配置中:

  

  


成功决不容易,还要加倍努力!

Struts2基础数据校验和框架校验的更多相关文章

  1. Struts2(三)——数据在框架中的数据流转问题

    一款软件,无在乎对数据的处理.而B/S软件,一般都是用户通过浏览器客户端输入数据,传递到服务器,服务器进行相关处理,然后返回到指定的页面,进行相关显示,完成相关功能.这篇博客重点简述一下Struts2 ...

  2. (转)struts2:数据校验,通过XWork校验框架实现(validation.xml)

    转载自:http://www.cnblogs.com/nayitian/p/3475661.html struts2:数据校验,通过XWork校验框架实现(validation.xml)   根据输入 ...

  3. struts2:数据校验,通过XWork校验框架实现(validation.xml)

    根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种: 参考:struts2:数据校验,通过Action中的validate()方法实现校 ...

  4. Struts2基础学习(四)—类型转换器和数据校验

    一.自定义类型转换器 1.概述      Struts2提供了常规类型转换器,可以用于常用数据类型的转换,但如果目标类型是一个特殊类型,则需要自定义转换器.Struts2 类型转换器实际上都是基于OG ...

  5. struts2:数据校验,通过Action中的validate()方法实现校验,图解

    根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种 Struts2中提供了一个com.opensymphony.xwork2.Valid ...

  6. 使用Struts2实现数据校验

    使用Struts2实现数据校验 为什么需要数据校验呢?答案很简单,假如当你登录想要京东,这时就需要数据校验了如果不输入用户名的话,那么就不会登陆成功,并且会提示出"请输入用户名"的 ...

  7. struts2:字段校验和非字段校验代码示例

    一.为什么要使用struts2的validate验证框架 :使用struts2的验证框架,能够提高客户端提交的数据的安全性.通过验证,确保保存进数据库的信息是正确的 二.使用struts2的valid ...

  8. struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)

    前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解 如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通 ...

  9. struts2(三)---struts2中的服务端数据验证框架validate

    struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个acti ...

随机推荐

  1. Holt-Winters原理和初始值的确定

      关于模型 (来自以下PPT,从第4页开始)   关于初始值: 以下文档给出了三个模型的初始值计算的思路. 大致思路如下,建立一个p阶移动平均模型,估计出参数即为初始值,具体的根据三种不同的模型,有 ...

  2. 使用OLEQAxObject导出Log日志文件

    头文件<QAxObject> Qt project settings需要支持QtActivex container 具体导出如下:(单列这里) QString filepath=QFile ...

  3. 常用的Mysql数据库操作语句大全

    一.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...

  4. C和指针 第三章 变量的储存类型 auto、static、register以及static关键词

    变量的储存类型决定标量何时创建,何时销毁以及他的值保持多久.有三个地方可以储存变量: 普通内存static 运行时堆栈auto 硬件寄存器register 变量的缺省储存类型取决于它的声明位置: 静态 ...

  5. OpenVPN使用用户名/密码验证方式

    OpenVPN推荐使用证书进行认证,安全性很高,但是配置起来很麻烦.还好它也能像pptp等vpn一样使用用户名/密码进行认证. 不管何种认证方式,服务端的ca.crt, server.crt, ser ...

  6. C#动态创建和动态使用程序集、类、方法、字段等

    C#动态创建和动态使用程序集.类.方法.字段等 分类:技术交流 (3204)  (3)   首先需要知道动态创建这些类型是使用的一些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使用反射,那么动 ...

  7. sql之left join、right join、inner join的区别

    sql之left join.right join.inner join的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括 ...

  8. canvas 画板

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. MyBatis的初始化方式

    1. 加载配置文件 public static void main(String[] args) throws IOException { //mybatis的配置文件 String resource ...

  10. sqlserver2000 数据库 'tempdb' 的日志已满

    方法一解决过程: 查看了下数据库的属性,是自动增长,不指定文件大小上限.在网上Google了很久,试了些方法都不行:数据库所在磁盘还有很大的可用空间,试着下重药了.直接把tempdb的数据文件和日志文 ...