验证表单介绍

验证表单介绍

  为什么要进行数据验证

    对数据的合法性进行检查,只允许合法的数据进入应用程序

  在哪里实现数据验证

    客户端验证

    数据提交前在客户端验证

  可使用JavaScript或jQuery实现

    特点:1.减少客户的等待时间;2.减小服务器压力

  服务器端验证

    在数据提交后服务器端验证

    特点:1.防止“绕过”客户端验证提交非法数据;2.可以在服务器端处理数据前确保数据的合法性

  Struts2有两种方式实现服务器端验证

    使用ActionSupport编码实现验证

    使用验证框架实现验证

ActionSupport编码实现验证

  使用ActionSupport实现验证

  在Action类的业务方法中直接验证

  重写validate()方法

  使用validateXxx()方法

  添加错误信息

  addFieldError(String fieldName,StringerrorMessage)

  addActionError(String anErrorMessage)

  在页面输出验证结果

  <s:fielderror/>输出一个或所有字段的错误信息

  <s:actionerror/>输出所有Action的错误信息

  <action>的配置

  <result name="input">x.jsp</result>

validate()方法实现验证

  在validate()方法中实现验证

  重写ActionSupport 类的validate()方法

  在validate()方法中实现验证

  将数据验证和业务处理分离

  添加与显示错误信息的方式不变

    小经验

      接收参数时,数据转换失败也会调用validate()方法

      validate()方法验证不通过,不会执行业务方法

使用validateXxx()方法实现验证

  validate()会对Action类中所有业务方法起作用

  如果仅想对某个业务方法进行数据验证怎么办?

   使用validateXxx()方法实现验证

  Struts2支持validateXxx()方法针对xxx()方法进行数据验证

     小经验

    validate()方法和validateXxx()方法同时存在时都会起作用

    validateXxx()方法的调用要先于validate()方法

 

 

使用验证框架实现验证

   验证框架

    验证实现的部分方便复用、扩展

    验证的实现与业务处理分离

     使用验证框架的过程

    编写JSP数据输入页面

    编写Action类及其配置文件

    在Action类同目录下创建验证文件ActionName-validation.xml

    编写验证规则

  ActionName-validation.xml对Action类中所有业务方法生效

  如果想对某一业务方法配置验证规则怎么做呢?

    解决方法

    对Action类中的某一业务方法单独编写<action>配置并使用method属性指定该业务方法

    提供ActionName-alias-validation.xml文件进行验证

    验证规则的编写不变

验证框架实现验证小结

  验证框架

  ActionName-validation.xml可对Action类中所有业务方法起作用

  ActionName-alias-validation.xml可对Action类中某一业务方法起作用

  如以上两个文件同时存在,两个文件都会起作用

   验证顺序

  Action父类-validation.xml

  Action父类-alias-validation.xml

  Action类-validation.xml

  Action类-alias-validation.xml

小结

   使用ActionSupport实现验证有三种方式

  业务方法直接验证、 validate()、 validateXxx()

   在Action类中添加错误信息

  使用addFieldError()方法添加字段错

  使用addActionError()方法添加Action业务相关的错

  使用验证框架实现验证

  ActionName-validation.xml

  ActionName-alias-validation.xml

  验证框架的验证规则可参考帮助文件

   显示错误信息

  <s:fielderror/>输出一个或所有字段的错误信息

  <s:actionerror/>输出所有Action的错误信息