Java开发每日复盘2018_0510

作者: 07e819eca0df | 来源:发表于2018-05-10 17:49 被阅读83次

今天来给大家分享一下

「服务端开发相关的,一条重要的原则」。

即:「不要相信前端传过来的数据」

不要相信前端传过来的数据,意思并不是说前端传过来的数据一定不好一定有问题,

而是说,对于前端传过来的任何数据,都要先做校验操作校验通过后,再对其进行相关处理来使用该数据。

这样可以避免很多,不必要的异常被抛出。

那么「不要相信前端传过来的数据」,换句话说,则是「尽量要前端少传递数据」。

那么校验操作具体要怎么做呢?

方案一:

在每一个需要做校验判断的函数体,处理接收到传进来的数据之前,增加判断语句。

如:

public void setA(A a) {

    if(a == null) {

        throw new RuntimeException("a不能为空");

    }

}

方案二:

在SpringBoot中,加入了「Hibernate Validatoe」依赖,用于做「Bean Validation」校验(Java规范JSR303)。

如:

「Bean Validation 注解」(常用)

@Null

(验证对象是否为空)

(可验证 任何 类型)

@NotNull

(验证对象是否为非空)

(可验证 任何 类型)

@Min

(验证 Number 和 String 对象是否大于等于指定的值)

(可验证 数值 类型)

@Max

(验证 Number 和 String 对象是否小于等于指定的值)

(可验证 数值 类型)

@Size

(验证对象(Array,Collection,Map,String)长度是否在给定的范围之内)

(可验证 集合/Map/List 类型)

@Past

(验证 Date 和 Calendar 对像是否在当前时间之前)

(可验证 日期 类型)

@Future

(验证 Date 和 Calendar 对象是否在当前时间之后)

(可验证 日期 类型)

@AssertTrue

(验证 Boolean 对象是否为 true)

(可验证 布尔 类型)

@AssertFalse

(验证 Boolean 对象是否为 false)

(可验证 布尔 类型)

@Valid

(级联验证注解)

注解位置:

「成员变量前面」

如:

@NotNULL int a = 0;

「方法上方」

如:

@NotNull

private int a() {}

用于验证该方法的返回值。

校验结果处理:

方案一:

Public XX xxx(@Validated @RequestBody A a){}

(若校验不通过,则接口直接返回400异常,不执行该方法体)

方案二:

Public XX xxx(@Validated @RequedtBody A a, BindingResult result){

    if (result.hasError()) {

            //此处自行处理校验不通过情况

    }

}

(即使校验不通过,也会进入方法体,执行该方法。校验结果从result参数传入,由方法体内代码自行处理)

-- zeroOS 复盘于 2018/5/10

相关文章

  • Java开发每日复盘2018_0510

    今天来给大家分享一下 「服务端开发相关的,一条重要的原则」。 即:「不要相信前端传过来的数据」 不要相信前端传过来...

  • 复盘日记2021-08-19

    今日复盘 林洪【2021】每日复盘 2021.8.19 周四 地点:昆明 工作/销售 安心购开发1家 续费沟通1家...

  • 复盘日记2021-08-18

    今日复盘 林洪【2021】每日复盘 2021.8.18周三 地点:昆明 工作/销售 12.8K(安心购开发1家) ...

  • 复盘日记2021-08-17

    今日复盘 林洪【2021】每日复盘 2021.8.17周二 地点:昆明 工作/销售 10.7K(安心购开发1家) ...

  • 2018-05-06——复盘

    每日复盘 ——今天开始每日复盘,并且公开。 每日复盘可以理解,那为什么公开? 第一、做一个实验(小...

  • 2018.1.13#人生效率手册温柔暴击#(Day61)-妮妮R

    早起6:00 每日复盘: 每周复盘

  • 2018-04-16每日复盘

    20180416每日复盘 每日复盘:昨日两大目标1. 周复盘+日复盘2. gre阅读训练(作业+录播+笔记+速度训...

  • 复盘,你应该这样做

    01 尽早复盘 复盘应当及时、高效,每日复盘每日做,活动复盘完成时做,这样可以确保头脑的记忆还是鲜活的、丰富的,并...

  • 每日复盘Day254

    米果果教育张滢 9月19复盘 【每日目标】 1.每日瑜伽 ✅ 2.每日早起✅ 3.每日复盘✅ 【每日成就】 【每日...

  • 每日复盘Day277

    米果果教育张滢 10月24复盘 【每日目标】 1.每日瑜伽 ✅ 2.每日早起 3.每日复盘✅ 【每日成就】 【每日...

网友评论

    本文标题:Java开发每日复盘2018_0510

    本文链接:https://www.haomeiwen.com/subject/wirtdftx.html