SpringMvc-Validation校验

在实际开发项目中,为了系统了稳定性,鲁棒性,安全性等等等等。我们需要对数据进行检验剔除,非法的,或格式错误的数据。

一般有两种选择,可以在前端进行校验,或者在后端进行校验。

然而对于安全性较高要求建议在服务器进行检验。所以今天我主要记录分享后端校验的方法。

在后端进行检验,也分多种情况。controller层,service层,和dao层。

控制层:

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

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

持久层:一般不校验。

校验思路:

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

 

是使用validation检验,要先引入三个JAR包。

配置校验器

 

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

举个在Controller中使用校验的栗子!

首先确认你要检验的对象,这里以Items为例

在Items类中

@Size是字符长度检验,在本例中允许商品名称在1~30字符之间。如果违法这个规定的话,将会输出输出错误配置文件当中的信息。

@Null为非空检验

在controller中,对需要进行校验的对象加上@Validated注解,BindingResult 接收校验出错的信息。

 


分组检验

什么是分组检验呢?为啥需要分组校验?

假设有这样一种需求

一个pojo被多个controller所共用,当不同的controller方法对同一个pojo进行检验。

不同的controller对pojo检验需求是不同的。比如name长度,有的的contoller可以是1~30字符,有controller允许0个字符。

在这种情况下,就需要定义多个分组检验。

其实就是定义不同的java接口,通过接口来区分不同的分组。

public interface ValidGroup1{

//接口中不需要定义任何方法,仅是对不同的校验规则进行分组
}

@Size(min=1,....,group={ValidatedGroup1.class})

在controller使用指定分组的校验

@Validated(value{ValidGroup1.class})

 

这样不同的controller通过不同的分组,使用不同的检验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值