SpringMVC数据校验

一、准备

1.1 校验理解

项目中,通常使用较多的是前端的校验,比如页面中js校验。对于安全要求较高建议在服务端进行校验。服务端校验有:

  • 控制层:校验页面请求的参数的合法性。在服务端校验不区分客户端(pc、手机、远程调用),其校验是一致的。
  • 业务层(使用较多):主要校验关键的业务参数,仅限于service接口中使用的参数。
  • 持久层:一般是不校验的。

1.2 springmvc 校验

  • springmvc使用hibernate的校验框架validation(和hibernate没有关系)。

  • 思路
    页面提交请求的参数,请求到Controller方法中,使用validation进行校验。如果校验出错,需要将错误信息展示到页面。

  • 具体需求
    商品修改,添加校验(检验商品名称长度,生成日期的非空校验)如果校验出错,在商品修改页面显示错误信息。

1.3 环境

添加相关校验包:

hibernate-validator-4.3.0.Final.jar
jboss-logging-3.1.0.CR2.jar
validation-api-1.0.0.GA.jar
1 @RequestMapping(value = "/login",method = RequestMethod.POST)
2     public String Login(Model model, @Valid User user, Errors errors){
3         if (errors.hasErrors()){
4             return "login";
5         }
6         System.out.println(user);
7         model.addAttribute(user);
8         return "success";
9     }

在需要校验的对象前加上@valid,后面紧跟Errors,用来做校验的错误处理。

1 public class User {
2     @NotNull
3     @Size(min = 3,max = 16)
4     private String username;
5     @NotNull
6     private String password;

校验的对象bean

注解含义
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 被注释的元素的大小必须在指定的范围内
@Digits (integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式 Hibernate Validator附加的constraint
@NotBlank(message =) 验证字符串非null,且长度必须大于0
@Email 被注释的元素必须是电子邮箱地址
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内


原文地址:https://www.cnblogs.com/xiehang/p/9744630.html