数据校验

数据校验

前端校验

Jquery-validate(专门用来校验的包)

  • 需要Jquery核心包
  • 需要validate包
  • 菜鸟教程提供的远程包
1
<script src="http://static.runoob.com/assets/jquery-validation-1.14.0/lib/jquery.js"></script>
2
<script src="http://static.runoob.com/assets/jquery-validation-1.14.0/dist/jquery.validate.min.js"></script>
  • jQuery Validate提供了中文信息提示包,位于下载包的 dist/localization/messages_zh.js
  1. 导入上述两个包
  2. 初始化
  3. 注意每个表单控件都要有个name
    1
    <script>
    2
        $().ready(function() {
    3
            $("#待校验的表单ID").validate({
    4
                //规则制定
    5
                rules:{
    6
                    email:{
    7
                        required:true,
    8
                        email:true
    9
                    },
    10
                    ....
    11
                },
    12
                //提示信息
    13
                messages:{
    14
                    email:"请输入一个正确的邮箱",
    15
                    ...
    16
                }
    17
            });
    18
        };
    19
    </script>

详细请参考官方文档

正则表达式

详细请参考官方文档

服务端校验

  • 为什么要服务端校验?
    答:因为有时是直接有请求的url发送过来,而不是用表单提交
  • 什么时候校验的?
    答:处理器适配器工作时校验,拿到请求参数——>进行类型转换——>校验——>交给处理请求的方法
  • 怎么校验的?
    答:
  1. 先导入相关jar包:
    hibernate.jar,jboss.jar,validation.jar,classmate
  2. 编写处理请求的方法
  3. 指定校验规则,在要校验的对象类前制定,加入规则的注解如:
1
@Email(message="邮箱格式不对",groups={RegisterGroup.class})
2
private String mail;

分组校验

类似注册和登录时,同时用到了账号和密码的校验,多次写重复的内容,显然不能这样,于是这里要用到分组校验。

  • 怎么分组?
  1. 创建分组类,一个组一个类
  2. 代表组的类内部什么都不用写
  3. 在要校验的对象类前的注解里加入goups={a.class},在controller里的方法添加(返回值类型后面,形参前面):@validated

资源文件

  • 为什么要使用资源文件?
    原因有两点:1. 国际化需要 2.解耦和,把中文提示单独定义在资源文件中
  • 怎么做呢?
    把class中的提示信息提取出去放入资源文件中,然后通过表达式获取信息。
  • 具体?
  1. 把校验出错信息提取到userValidateMessageResource.properties文件中,注意是键值对的形式
  2. 把user对象中指定出错信息的地方改为通过{key}的形式获取资源文件中的内容
  3. 需要注册信息资源bean,目的是读取资源文件中的内容到内存,然后在校验器bean