合法性检查示例|学习笔记

简介: 快速学习合法性检查示例

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术合法性检查示例学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15915


合法性检查示例

 

内容介绍

一、关于 value 对象加标签

二、定义 validation 的注解

三、处理异常

四、定义类型

 

一、关于 value 对象加标签

本节课主要讲解标签  javax.validation ,其作用是用来去做输入参数的合法性检

查, 可以看以下举例:producVo 这一组标签是加在 controller value 对象上面。

此例里面写到有两个 value 对象,首先是关于固守 value 对象加标签的情况。

1.商品名称

对于商品的名称,因为输入的时候商品的名称不能为空,所以加了一

个Notblank 进行解释,出现问题以后会进行提示,像前端提示这样

的一个信息。

因为这是一个字符串的对象,所以加了 Notblank 以后,如果字符

串是 Nor,即全是空格里面,Notblank 都会做合法性检查,继而抛出

一个错误以此来表示输入的“商品名称不能为空”。

2.规格

对于每一个规格来说,规格的序号不能为空,是因为规格是一个实训类型的字符串,所以前面加 Notblank 即可。另外加限制的东西是价格,因为最小单位是分,所以它的促销价、零售价是用整数来表示其价格。相对浮点型的数在计算速度上会快一些,因此用整型来表达价格。

image.png

其次,对于两个价格而言,是不能出现负数的。如果出现负数意味着每卖一个东西

都要赔钱给别人,所以定义一个最小的限制。

对于重量而言也是如此,同样加一个最小的限制,即不能是负数的重量,这就是在

value 对象上面所加的限制。

 

二、定义 validation 的注解

在给 value 对象定义 validation 的注解以后,在 controller 里面可以看见当传进来的东西要用 value 对象来接的时候,此时可以选择控制是否需要来做一个合法性检

查。例如在 createGood 方向中间,

image.png

因为要对输入的对象要做一个合法性检查,即商品的属性是否是合法的。所以在输入参数的估值 value 前面加了一个注解,叫做 Validated。这样使得定义在 value 里面的一些合法性检查就起作用。加入Validated的标签以后,可以使他的 controller 在接受到这样的一个估值 value 对象的时候就可以对里面的属性进行合

法性检查。

如果说合法性检查结果不满足要求,则 controller 就会抛出一个 exception。  

exception 的类型叫做方法的参数,需要处理不合法的异常。因为只有处理异常才会知道是哪一个方法出现问题,并且要返回一个400的返回码表示输入的参数是错误的。

 

三、处理异常

1.在 springMVC 的中间处理异常

可以定义一个新的类叫做处理异常的类,为 controller expression handler 的类。在类前面加一个标签叫做 rest controller advice ,此标签代表着它为一个  advice 的类,这是 AUP 中要讲的概念。

关于 advice 的类的作用:advice 的类是一个异常出现的时候是怎样去处理此异常。

即当 controller 的异常出现的时候该怎样去处理异常。所以在 rest controller advice 后面加了一个al,实际上这限制了advice的适用场合,因为并不是在所有的地方都会调用 advice,仅仅是加了rest controller 的标签的类上出现异常才会调用

rest controller advice 里面所定义的方法。

2.methodArgumentNotValid 的方法捕捉异常

image.png

此方法靠在这个方法前面的 out exception handler 标签叫做来捕捉异常

image.png

这个标签里面的 value 表明这个方法是用来处理 methodArgument exception 的异常。所以参数在这个 response controller的中间抛出来的异常的代码里,定义了一个返回的对象 Return Object ,Return Object 是一个在非 controller 层都会使用

到的一个返回对象。

跟在 controllerc 层返回的对象是非常类似的。这里面是有三个部分:一个部分是

errNo,一个是 errMsg,还有一个是返回值。

image.png

返回值部分由有一个模板的概念来定的,因为在这个部分可能会要把不同的对象返回。在此方法里面的代码就是把 exception 的中间所有的 message 组到一起,

image.png

由此可见到底会有多少个 message,然后用分号分隔,继而作为 errMsg 把它放在 Return Object 带回去;同时也定义一个字段不合法的一个错误叫做 Field NotValid,把它放在 Return Object 里面,因为返回值是有中文的,所以需要控制一下。所以我们需要定义一下他的返回类型。

相关文章
|
2月前
|
传感器 数据处理
示例三、光照度测试仪
示例三、光照度测试仪
26 1
|
Cloud Native 架构师 Devops
几个测试示例分享 | 学习笔记
快速学习几个测试示例分享
93 0
几个测试示例分享 | 学习笔记
|
Kubernetes Cloud Native 架构师
示例介绍|学习笔记
快速学习示例介绍
82 0
示例介绍|学习笔记
|
监控 Java 应用服务中间件
TestTomcat示例学习笔记
快速学习TestTomcat示例
79 0
TestTomcat示例学习笔记
|
Kubernetes Cloud Native 架构师
示例介绍 | 学习笔记
快速学习示例介绍
79 0
示例介绍 | 学习笔记
|
Cloud Native 架构师 机器人
几个测试示例分享|学习笔记
快速学习几个测试示例分享
87 0
几个测试示例分享|学习笔记
|
XML Java 数据格式