博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC由浅入深day02_4springmvc校验
阅读量:5745 次
发布时间:2019-06-18

本文共 2870 字,大约阅读时间需要 9 分钟。

springmvc校验

  4.1 校验Validation理解

  b/s系统中对http请求数据的校验多数在客户端进行,这也是出于简单及用户体验性上考虑,但是在一些安全性要求高的系统中服务端校验是不可缺少的,本节主要学习springmvc实现控制层添加校验。

  Spring3支持JSR-303验证框架,JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,官方参考实现是Hibernate Validator(与Hibernate ORM 没有关系),JSR 303 用于对Java Bean 中的字段的值进行验证。

 

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

 

服务端校验:

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

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

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

 

  4.2 springmvc校验需求

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

 

校验思路:

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

具体需求:

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

 

  4.3 环境准备

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

 

 

  4.4 配置校验器

springmvc.xml中添加:

 

classpath:CustomValidationMessages

 

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

    4.5.1 配置方式1

springmvc.xml中配置:

    4.5.2 配置方式2(自学)

   

 

  4.6 在pojo中添加校验规则

在ItemsCustom.java中添加校验规则:

 

 

  4.7 CustomValidationMessages.properties

 

CustomValidationMessages.properties配置校验错误信息:

 

  4.8 捕获校验错误信息

修改Controller方法:

 

注意:添加@Validated表示在对items参数绑定时进行校验,校验信息写入BindingResult中,在要校验的pojo后边添加BingdingResult, 一个BindingResult对应一个pojo,且BingdingResult放在pojo的后边。

 

  4.9 在页面显示校验错误信息

在controller中将错误信息传到页面即可。

 

 

页面显示错误信息:

 

访问:

 

  4.10 分组校验

    4.10.1 需求

在pojo中定义校验规则,而pojo是被多个 controller所共用,当不同的controller方法对同一个pojo进行校验,但是每个controller方法需要不同的校验。

 

如果两处校验使用同一个Items类则可以设定校验分组,通过分组校验可以对每处的校验个性化。

 

解决方法:

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

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

 

 

    4.10.2 校验分组

定义分组:

分组就是一个标识,这里定义一个接口:

 

public interface ValidGroup1 {}public interface ValidGroup2 {}

 

 

    4.10.3 在校验规则中添加分组

 

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

 

 

在@Validated中添加value={ValidGroup1.class}表示商品修改使用了ValidGroup1分组校验规则,也可以指定多个分组中间用逗号分隔,

@Validated(value={ValidGroup1.classValidGroup2.class })

 

再次访问测试:

  4.11 校验注解

@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/justdoitba/p/8343297.html

你可能感兴趣的文章
存储过程点滴
查看>>
[LeetCode]22.Generate Parentheses
查看>>
计算A/B Test需要的样本量
查看>>
二叉树前序中序后序遍历的非递归方法
查看>>
[Unity3d]Shader 着色器 学习前了解知识
查看>>
维辰超市:借助云商城成功转型新零售
查看>>
web.xml中<load-on-start>n</load-on-satrt>作用
查看>>
【算法】CRF
查看>>
windows 8 微软拼音输入法
查看>>
Windows UI风格的设计(7)
查看>>
SQL中使用WITH AS提高性能 使用公用表表达式(CTE)简化嵌套SQL
查看>>
oracle 强行杀掉一个用户连接
查看>>
Git提交本地库代码到远程服务器的操作
查看>>
让你快速上手的Glide4.x教程
查看>>
浮动和清除(闭合)浮动
查看>>
LR录制脚本时IE打不开的原因
查看>>
Sublime Text 2.0.2,Build 2221注册码
查看>>
最长递增子序列 动态规划
查看>>
原生CSS设置网站主题色—CSS变量赋值
查看>>
webpack 4.0 中 clean-webpack-plugin 的使用
查看>>