`
qindongliang1922
  • 浏览: 2183973 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117536
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125922
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59912
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

如何在Spring Boot项目使用参数校验

阅读更多
开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空,非null,整数值的范围,字符串的个数,日期,邮箱等等。最常见的就是我们直接写代码校验,这样以后比较繁琐,而且不够灵活。

Bean Validation 1.0(JSR-303)是一个校验规范,在Spring Boot项目由于自带了Hibernate validator 5(http://hibernate.org/validator/)实现,所以我们可以非常方便的使用这个特性 。

核心的pom依赖:
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.3.1.Final</version>
</dependency>




首先,需要我们声明一个Bean,注入校验器到Spring Boot的运行环境
@Configuration
@EnableAutoConfiguration
public class FactoryConfig {
    
    final static Logger logger= LoggerFactory.getLogger(FactoryConfig.class);
 
    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor(){
     return new MethodValidationPostProcessor();
    }
    
    }



校验常用的注解如下:

@AssertFalse 校验false
@AssertTrue 校验true
@DecimalMax(value=,inclusive=) 小于等于value,
inclusive=true,是小于等于
@DecimalMin(value=,inclusive=) 与上类似
@Max(value=) 小于等于value
@Min(value=) 大于等于value
@NotNull  检查Null
@Past  检查日期
@Pattern(regex=,flag=)  正则
@Size(min=, max=)  字符串,集合,map限制大小
@Valid 对po实体类进行校验




下面看一个使用例子:
package hello;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class PersonForm {

    //名字不能为空,而且长度必须在2和30之间
    @NotNull(message = "名称不能为空")
    @Size(min=2, max=30, message = "名字长度必须在2和30之间")
    private String name;
    
    //年龄不能为空,而且必须大于等于18岁
    @NotNull
    @Min(18)
    private Integer age;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String toString() {
        return "Person(Name: " + this.name + ", Age: " + this.age + ")";
    }
}


接着看下如何在Controller层使用
//非实体类参数可以直接使用注解
 @GetMapping("/check")
@ResponseBody
public String check(@Min(0,message = "kpId必须大于等于0") @RequestParam int kpId,@RequestParam int level) {
        return "ok";
}
    //实体类注解校验使用@Valid
    @PostMapping("/")
    public String checkPersonInfo(@Valid PersonForm personForm, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return "form";
        }
        return "redirect:/results";
    }


注意上面的Spring提供的BindingResult是错误结果的一个封装,我们可以在web页面中通过这个对象拿到详细的错误信息,

<td th:if="${#fields.hasErrors('age')}" th:errors="*{age}">Age Error</td>


总结:

通过使用注解来快速检验传入的web参数还是非常简洁强大的,这里仅仅列举了一小部分的校验的知识,如果想要更深入的
了解和学习,请参考hibernate官网文档:http://hibernate.org/validator/


有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。


0
3
分享到:
评论
1 楼 java_web_hack1 2016-11-02  
http://edu.51cto.com/course/course_id-6558.html
spring boot实战视频教程

相关推荐

    详解如何在Spring Boot项目使用参数校验

    本篇文章将详细介绍如何在 Spring Boot 项目中使用参数校验,包括使用 Bean Validation 1.0(JSR-303)规范和 Hibernate Validator 实现参数校验的方法。 一、Bean Validation 1.0(JSR-303)规范 Bean Validation...

    Spring Boot 参数校验 Validation 使用

    Spring Boot 参数校验 Validation 使用

    Spring Boot 参数校验

    Bean Validation是Java定义的一套基于注解的数据校验规范。这里简单实现了Spring Boot 参数校验,包括自定义注解,分组校验,全局异常处理等

    快速入手 Spring Boot 参数校验.docx

    快速入手 Spring Boot 参数校验

    快速入手Spring Boot 参数校验.docx

    快速入手Spring Boot 参数校验

    Spring Boot技术知识点:如何使用@Validated注解来对邮箱字段进行数据校验

    Spring Boot技术知识点:如何使用@Validated注解来对邮箱字段进行数据校验

    2023最新《Spring Boot基础教程》

    Spring Boot 2.x基础教程:JSR-303实现请求参数校验 Spring Boot 2.x基础教程:Swagger接口分类与各元素排序问题详解 Spring Boot 2.x基础教程:Swagger静态文档的生成 Spring Boot 2.x基础教程:找回启动

    Spring Boot中使用LDAP来统一管理用户信息的示例

    创建一个基础的 Spring Boot 项目,在 pom.xml 中引入两个重要依赖: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-data-ldap &lt;groupId&gt;com.unboundid&lt;/groupId&gt; ...

    如何在spring boot中进行参数校验示例详解

    Spring Boot参数校验与Lombok使用详解 在Spring Boot中进行参数校验是非常重要的,因为在实际...在Spring Boot中进行参数校验是非常重要的,我们可以使用Lombok来简化代码,并使用Validator来对参数进行合理性校验。

    Spring Boot (3) 校验表单重复提交

    Spring Boot (3) 校验表单重复提交

    Spring Boot 3 中文文档

    我们使用了 Deepl AI 翻译,并且对翻译后的内容进行人工逐行校验,从 java 开发者的角度对内容进行优化,保留了一些原汁原味的专业术语,相信这份文档可以让你有不一样的体验。 还有其他优质的 spring/spring-data/...

    注解+AOP优雅的实现java项目的接口参数校验(含源码)

    基于Spring boot + maven,以注解+AOP方式实现的java后端项目接口参数校验框架。迄今为止使用最简单、最容易理解的参数校验方案。博客地址:https://blog.csdn.net/weixin_42686388/article/details/104009771

    spring boot 整合mina 串口

    本文将详细介绍如何在Spring Boot项目中整合Mina来实现串口通信。 首先,我们需要了解Spring Boot的基本架构。Spring Boot的核心特性是自动配置和起步依赖,这使得我们无需编写大量的XML配置文件,只需通过注解就能...

    Spring Boot + validation + AOP 请求参数校验

    Spring Boot + validation + AOP 请求参数校验 一、validation 校验注解 通用 @Null 被注释的属性必须为 null @NotNull被注释的属性必须不为 null @AssertTrue 被注释的属性必须为 true @AssertFalse 被注释的属性...

    Spring Boot实现通用的接口参数校验

    Spring Boot 实现通用的接口参数校验 本文介绍了基于 Spring Boot 和 JDK8 编写的一个 AOP,以实现通用的接口参数校验。通过自定义注解实现了参数校验,解决了实体类上添加注解的限制,实现了方法级别的参数校验。 ...

    Spring Boot参考指南.pdf

    - **导入XML配置**:说明如何在Spring Boot项目中使用XML配置文件。 - **自动配置**: - **逐步替换自动配置**:解释如何根据项目需求逐步覆盖或替换默认的自动配置。 - **禁用特定的自动配置**:提供方法来禁用...

    Spring Boot项目学习之通用权限管理项目03

    在本教程中,我们将深入探讨如何使用Spring Boot构建一个通用的权限管理项目,重点在于“增删改”操作。Spring Boot作为Java开发的热门框架,以其简洁的配置和快速的开发能力深受开发者喜爱。在权限管理领域,它可以...

    集成spring-boot-starter-validation对接口参数校验.zip

    接下来,我们来看如何在Spring Boot中使用`@Validated`注解进行接口参数的校验。当一个控制器方法接收的参数前有`@Validated`注解时,Spring Boot会自动调用对应的验证规则。例如,我们有一个用户注册的接口,接收一...

    Spring Boot技术知识点:如何使用@Valid注解来对邮箱字段进行数据校验

    当在方法参数上使用`@Valid`时,Spring MVC会调用对应的Validator来检查该参数,确保其满足预定义的校验规则。 2. **如何创建验证规则**: 我们可以通过在模型类的属性上添加各种验证注解来定义校验规则。例如,...

    spring boot基础笔记

    使用@ConfigurationProperties注解时,需要在项目中导入spring-boot-configuration-processor依赖。 8. JSR303校验:JSR303是Java的一个标准规范,用于在对象上进行校验。Spring Boot利用JSR303规范提供的校验注解...

Global site tag (gtag.js) - Google Analytics