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

如何在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技术知识点:如何使用@Validated注解来对邮箱字段进行数据校验

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

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

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

    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 (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规范提供的校验注解...

    Spring Boot+Mybatis Plus+Thymeleaf实现用户登录和校验用户名是否重复功能

    在本项目中,我们利用了Spring Boot、Mybatis Plus和Thymeleaf三大技术栈来构建一个用户管理系统,其中包含了用户登录以及校验用户名是否重复的功能。以下将详细阐述这三者之间的配合以及如何实现所述功能。 首先,...

    spring-boot中文参考指南

    - **使用Spring Boot Maven插件**:使用插件构建项目。 - **Gradle**:使用Gradle进行项目构建。 - **Ant**:虽然不是首选,但仍然可以使用Ant构建。 - **Starter POMs**:介绍如何使用Spring Boot提供的Starter...

Global site tag (gtag.js) - Google Analytics