SpringMVC 之服务端校验(五)

校验理解:

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

服务端校验:

         控制层 controller:校验页面请求的参数的合法性。在服务端控制层 controller 校验,不区分客户端类型(浏览器、手机客户端、远程调用)

         业务层 service(使用较多):主要校验关键业务参数,仅限于 service 接口中使用的参数。

         持久层 dao:一般是不校验的。

 

需求:

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

校验思路:

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

具体需求:

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

 

准备 jar 包:

hibernate 的校验框架 validation 所需要 jar 包:

配置校验器:

 

校验器注入到处理器适配器中

 

在 pojo 中添加校验规则

 

CustomValidationMessages.properties:

 

捕获校验错误信息:

 

editProducts.jsp:

 

效果:

 

 

分组校验

需求:

在 pojo 中定义校验规则,pojo 是被多个 controller所共用。当不同的 controller 方法对同一个 pojo 进行校验时,不能让每个 controller 方法完成不同的校验。
 

解决方法:

定义多个校验分组(其实是一个 java 接口),分组中定义有哪些规则;

 

每个 controller 方法使用不同的校验分组。

 

 

分组接口:

在校验规则中添加分组:

在 controller 方法使用指定分组的校验:

 

JSR-303原生支持的限制有如下几种

限制

说明

@Null

限制只能为null

@NotNull

限制必须不为null

@AssertFalse

限制必须为false

@AssertTrue

限制必须为true

@DecimalMax(value)

限制必须为一个不大于指定值的数字

@DecimalMin(value)

限制必须为一个不小于指定值的数字

@Digits(integer,fraction)

限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

@Future

限制必须是一个将来的日期

@Max(value)

限制必须为一个不大于指定值的数字

@Min(value)

限制必须为一个不小于指定值的数字

@Past

限制必须是一个过去的日期

@Pattern(value)

限制必须符合指定的正则表达式

@Size(max,min)

限制字符长度必须在min到max之间

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值