9:参数校验-Java Spring

简介: 9:参数校验-Java Spring

9.1 参数校验介绍

参数校验即保证数据的合法性,JCP组织定义了一个标准来规范化这个任务操作,即Java Validation API

Spring MVC 有两种方法可以验证输入,利用 Spring 自带的Validated框架或JSR 303 实现

9.2 JSR303

JSR303(Java Specification Requests)即Java 规范请求,是一套JavaBean参数校验的标准,

它定义了很多常用的校验注解,可直接将注解加在JavaBean的属性上,在需要校验的时候实现服务器端的数据验证

JSR303 是JavaEE 6 中的一项子规范,叫Bean Validation,Spring 的 DataBinder 在进行数据绑定时,Spring MVC同时支持JSR303标准的校验框架,通过使用注解的方式进行验证规则的添加


9.3 Hibernate Validator

Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 和一些附加实现

Spring 本身没有提供 JSR303 的实现,Hibernate Validator 实现了 JSR303,所以必须在项目中加入 Hibernate Validator 库

Hibernate Validator提供的校验注解

注解 说明
@NotNull/@Null 验证注解的元素值不是/是null
@AssertFalse/@AssertTrue 验证注解的元素值是false/true
@Max(value)/@Min(value) 验证注解的元素大于/小于值(value)
@Past/@Future 验证注解的元素比当前日期早/晚
@Email 验证注解的元素必须是Email
@NotEmpty 验证注解的元素值不为null,但长度不能为0
@NotBlank 验证注解的元素值不为null,但去除字符串的空格后长度不能为0,只应用于字符串

9.4 参数校验依赖引入

Springboot项目引入spring-boot-starter-web会默认引入hibernate-validator

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>6.2.3.Final</version>
</dependency>

例如导入参数校验依赖后,想要验证用户名和密码不为空

  @NotBlank(message = "用户名不能为空")
    @Size(min=2,max=12,message="用户名的长度在2~12之间")
    private String username;
    @NotBlank(message = "密码不能为空")
    private String password;


目录
相关文章
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
76 2
|
25天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
46 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
1月前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
218 12
基于开源框架Spring AI Alibaba快速构建Java应用
|
1月前
|
Java
实现java执行kettle并传参数
实现java执行kettle并传参数
30 1
|
2月前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
92 1
Spring 框架:Java 开发者的春天
|
2月前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
2月前
|
JSON Java Maven
实现Java Spring Boot FCM推送教程
本指南介绍了如何在Spring Boot项目中集成Firebase云消息服务(FCM),包括创建项目、添加依赖、配置服务账户密钥、编写推送服务类以及发送消息等步骤,帮助开发者快速实现推送通知功能。
119 2
|
1月前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
49 0
|
1月前
|
Java
在Java中定义一个不做事且没有参数的构造方法的作用
Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
|
2月前
|
存储 人工智能 Java
将 Spring AI 与 LLM 结合使用以生成 Java 测试
AIDocumentLibraryChat 项目通过 GitHub URL 为指定的 Java 类生成测试代码,支持 granite-code 和 deepseek-coder-v2 模型。项目包括控制器、服务和配置,能处理源代码解析、依赖加载及测试代码生成,旨在评估 LLM 对开发测试的支持能力。
56 1