不多说废话. 首先,我们需要在入参实体对象中,使用注解,控制 @Datapublic class UpdateShufflingRequest { private String shuffling_logo; private Integer shuffling_state;//是否轮播,0否,1是 private String shuffling_no;//轮播图编号 @NotEmpty(message="小区id不允许空") private String community_id;…
在后端发生异常或者是请求出错时,前端通常显示如下 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Fri Jun :: CST There was an unexpected error (type=Not Found, status=). No message available 对于用户来说非常不友好. 本文主要讲解…
前言 在web应用中,请求处理时,出现异常是非常常见的.所以当应用出现各类异常时,进行异常的捕获或者二次处理(比如sql异常正常是不能外抛)是非常必要的,比如在开发对外api服务时,约定了响应的参数格式,如respCode.respMsg,调用方根据错误码进行自己的业务逻辑.本章节就重点讲解下统一异常和数据校验处理. springboot中,默认在发送异常时,会跳转值/error请求进行错误的展现,根据不同的Content-Type展现不同的错误结果,如json请求时,直接返回json格式参数.…
对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功能模块,这时候就要求我们在服务端接收到数据的时候也对数据的有效性进行验证.为什么这么说呢?往往我们在编写程序的时候都会感觉后台的验证无关紧要,毕竟客户端已经做过验证了,后端没必要在浪费资源对数据进行验证了,但恰恰是这种思维最为容易被别人钻空子.毕竟只要有点开发经验的都知道,我们完全可以模拟 HTTP 请求到后台地址,模拟请求过程中发送一些涉及系统安全的数据到后台,后果可想而知.... 验…
目录 本篇要点 后端参数校验的必要性 不使用Validator的参数处理逻辑 Validator框架提供的便利 SpringBoot自动配置ValidationAutoConfiguration Validator+BindingResult优雅处理 为实体类定义约束注解 使用@Valid或@Validated注解 发送Post请求,伪造不合法数据 Validator + 全局异常处理 定义全局异常处理 定义接口 @Validated精确校验到参数字段 定义接口 发送GET请求,伪造不合法信息…
本文记录学习在SpringBoot中做数据校验. 一 什么是数据校验 数据校验就是在应用程序中,对输入进来得数据做语义分析判断,阻挡不符合规则得数据,放行符合规则得数据,以确保被保存得数据符合我们得数据存储规则. 在SpringMvc中做数据校验有2中方式:一种是 Spring 自带的验证框架,另外一种是利用 JSR 实现.JSR 是一个规范,提供了完整得一套 API,通过标注给对象属性添加约束.Hibernate Validator 就是 对JSR 规范所有注解的具体实现,以及一些附加的约束注…
Springboot配置文件: application.yml   application.properties(自带) yml的格式写起来稍微舒服一点 在application.properties中数据是下面的样子: #IDEA的 properties配置文件是utf-8编码的 #配置实体类Person字段 person.lastame=张三 person.age=18 person.birth=2018/11/12 person.boss=false person.maps.k1=v1 p…
概述 在开发RESTFull API 和普通的表单提交都需要对用户提交的数据进行校验,例如:用户姓名不能为空,年龄必须大于0 等等.这里我们主要说的是后台的校验,在 SpringBoot 中我们可以通过使用 Hibernate Validator 来进行后台的数据校验的. 闲话少说!接下来就开始介绍如何使用 Hibernate Validator 来进行数据的校验. Hibernate Validator 实战操作 我们在添加用户的功能基础上来进行改造. 用户Model类代码如下: public…
关于javax.validation.Validator校验的使用 对于要校验的实体类:其需要校验的字段上需要添加注解 实际例子 使用:首先要拿到 validator的子类 Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); 其中方法可以参考 API对实体类的校验 Set<ConstraintViolation<Object>> set = validator.validat…
SpringBoot中使用了Hibernate-validate校验框架 1.在实体类中添加校验规则 校验规则: @NotBlank: 判断字符串是否为null或者是空串(去掉首尾空格).@NotEmpty: 判断字符串是否null或者是空串.@Length: 判断字符的长度(最大或者最小)@Min: 判断数值最小值@Max: 判断数值最大值@Email: 判断邮箱是否合法 例: public class User { @NotBlank(message="用户名不能为空")//非空校…
@Validated //开启JSR303数据校验注解 校验规则如下: [一]空检查 @Null 验证对象是否为null @NotNull 验证对象是否不为null, 无法查检长度为0的字符串 @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格. @NotEmpty 检查约束元素是否为NULL或者是EMPTY. [二]Booelan检查 @AssertTrue 验证 Boolean 对象是否为 true @AssertFalse 验证 B…
使用示例: @Component @ConfigurationProperties(prefix = "person") @Validated //使用数据校验注解 public class Person { @Email(message="邮箱格式错误") private String email; } 常见的校验注解: 空检查 @Null 验证对象是否为null @NotNull 验证对象不能为null,无法查检空字符串 @NotBlank 验证去掉前后空格后的…
yami配置文件 YAML是 "YAML Ain't a Markup Language" (YAML不是一种标记语言)的递归缩写.在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言) 这种语言以数据作为中心,而不是以标记语言为重点! yaml 基础语法(语法要求严格!) 1.空格不能省略 2.以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的. 3.属性和值的大小写都是十分敏感的.…
每篇一句 在金字塔塔尖的是实践,学而不思则罔,思而不学则殆(现在很多编程框架都只是教你碎片化的实践) 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380)Hibernate-Validation 6.x使用案例 [小家Spring]@Validated和@Valid的区别?教你使用它完成Controller参数校验(含级联属性校验)以及原理分析 [小家Spring]Spring方法级别数据校验:@Validate…
YAML YAML是 "YAML Ain't a Markup Language" (YAML不是一种置标语言)的递归缩写 # yaml配置 server: prot: YAML语法 # 基本语法(空格不能省略)# 以空格的缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的# 属性和值的大小写都是十分敏感的k:(空格) v# 例子server: port: 8081 path: /hello 字面量:普通的值  [ 数字,布尔值,字符串  ] # 字面量直接写在后面就可以 ,…
文章目录 Java中的数据校验 Bean Validation(JSR 380) 使用示例 Spring对Bean Validation的支持 Spring中的Validator 接口定义 UML类图 SmartValidator SpringValidatorAdapter ValidatorAdapter CustomValidatorBean LocalValidatorFactoryBean OptionalValidatorFactoryBean 使用示例 @Validated跟@Va…
一.JSR 303 1.什么是 JSR 303? JSR 是 Java Specification Requests 的缩写,即 Java 规范提案. 存在各种各样的 JSR,简单的理解为 JSR 是一种 Java 标准. JSR 303 就是数据检验的一个标准(Bean Validation (JSR 303)).参考: https://www.jianshu.com/p/554533f88370 2.为什么使用 JSR 303? 处理一段业务逻辑,首先要确保数据输入的正确性,所以需要先对数据…
前言 springboot内置的/error错误页面并不一定适用我们的项目,这时候就需要进行自定义统一异常处理,本文记录springboot进行自定义统一异常处理. 1.使用@ControllerAdvice.@RestControllerAdvice捕获运行时异常. 2.重写ErrorController,手动抛出自定义ErrorPageException异常,方便404.403等被统一处理. 代码 项目结构 引入我们父类pom即可,无需引入其他依赖 开始之前,需要先定下统一返回对象.自定义异…
Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理. 导入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> 使用: 类上添加@validated.字段上根据实际情况使…
使用Hibernate_Validator进行数据校验,好处不言而喻:规范统一,低耦合度. 1.pom.xml <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.0.1.Final</version> </dependency> <dependency&…
我们上一篇文章是建立了一个自定义的异常类,来代替了原始的Exception类.在Serice层抛出异常,然后要在Action层捕获这个异常,这样的话在每个Action中都要有try{}catch{}代码,这样很麻烦啊,那怎么办?定义一个统一的异常处理器类.所有的异常都不用自己去捕获了,统一进行处理就好. 编写流程:…
每篇一句 > 吾皇一日不退役,尔等都是臣子 对Spring感兴趣可扫码加入wx群:`Java高工.架构师3群`(文末有二维码) 前言 前几篇文章在讲Spring的数据绑定的时候,多次提到过数据校验.可能有人认为数据校验模块并不是那么的重要,因为硬编码都可以做.若是这么想的话,那就大错特错了~ 前面讲解DataBinder的时候一个小细节,它所在的包是:org.springframework.validation,并且在分析源码的时候能看到DataBinder它不仅能够完成数据绑定,也提供了对数据…
每篇一句 吾皇一日不退役,尔等都是臣子 相关阅读 [小家Java]深入了解数据校验(Bean Validation):基础类打点(ValidationProvider.ConstraintDescriptor.ConstraintValidator) 对Spring感兴趣可扫码加入wx群:`Java高工.架构师3群`(文末有二维码) 前言 前几篇文章在讲Spring的数据绑定的时候,多次提到过数据校验.可能有人认为数据校验模块并不是那么的重要,因为硬编码都可以做.若是这么想的话,那就大错特错了~…
每篇一句 在<深度工作>中作者提出这么一个公式:高质量产出=时间*专注度.所以高质量的产出不是靠时间熬出来的,而是效率为王 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380)Hibernate-Validation 6.x使用案例 [小家Java]深入了解数据校验(Bean Validation):基础类打点(ValidationProvider.ConstraintDescriptor.Constraint…
前言 我们都知道在平时写controller时候,都需要对请求参数进行后端校验,一般我们可能会这样写 public String add(UserVO userVO) { if(userVO.getAge() == null){ return "年龄不能为空"; } if(userVO.getAge() > 120){ return "年龄不能超过120"; } if(userVO.getName().isEmpty()){ return "用户名不…
在web应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对 数据进行验证.输入验证分为客户端验证与服务器端验证.客户端验证主要通过JavaScript脚本进行,而服务器端验证则主要通过Java代码进行验证.   为了保证数据的安全性,一般情况下,客户端和服务器端验证都是必须的 1.导入jar包 SpringMVC支持JSR(Java Specification Result,Java规范提案)303-Bean Validation数据验证规范.而该规范的实现者很多,其中较常用的是Hib…
   springmvc的数据校验 在Web应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对数据进行验证,输入验证分为客户端验证与服务器端验证. 客户端验证主要通过javaScript脚本进行,而服务器端验证则主要通过Java代码进行验证 为了保证数据的安全性,一般情况下,客户端和服务器端验证都是必须的 在前两次我们展示了如何绑定数据,绑定完数据之后如何确保我们得到的数据的正确性?这就是我们本篇要说的内容 -> 数据验证. 这里我们采用Hibernate-validator来进行验证…
在介绍类型转换和格式化之前,我首先来介绍 <mvc:annotation-driven />. 需要导入的 schema: xmlns:mvc="http://www.springframework.org/schema/mvc" 一.作用: 1.会自动注册 RequestMappingHandlerMapping.RequestMappingHandlerAdapter 以及 ExceptionHandlerExceptionResolver 三个 Bean. 若配置该注…
一.自定义类型转换器 1.概述      Struts2提供了常规类型转换器,可以用于常用数据类型的转换,但如果目标类型是一个特殊类型,则需要自定义转换器.Struts2 类型转换器实际上都是基于OGNL实现的,在OGNL项目中,有一个TypeConverter接口,自定义类型转换器必须实现 ongl.TypeConverter.        2.编写类型转换器 (1)实现TypeConverter接口,实现一个方法 public Object convertValue(Map<String,…
Struts2的数据校验属于服务器端校验,Struts2 支持校验方式 : 手动校验(代码校验) :在服务器端通过编写java代码,完成数据校验 自动校验(配置校验) :XML配置校验(主流) 和 注解配置校验 1.手动校验 1)Struts2的手动校验步骤: 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法; 要继承ActionSupport类或者实现Validateable接口: 重写Validateable接口的validate()…