欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot參數(shù)校驗(yàn)示例詳解

 更新時(shí)間:2023年10月25日 10:19:35   作者:會洗碗的CV工程師  
SpringBoot自帶了validation工具可以從后端對前端傳來的參數(shù)進(jìn)行校驗(yàn),本文給大家介紹SpringBoot參數(shù)校驗(yàn)及用法,感興趣的朋友跟隨小編一起看看吧

SpringBoot自帶了validation工具可以從后端對前端傳來的參數(shù)進(jìn)行校驗(yàn),用法如下:

首先得添加依賴

<!-- 參數(shù)校驗(yàn) -->
<dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

一、簡單數(shù)據(jù)類型校驗(yàn)

1.1 編寫相關(guān)Controller

@Validated
@RestController
public class TestController {
 
    @GetMapping("/t1")
    // name不能為空
    public String t1(@NotBlank String name){
        System.out.println(name);
        return name;
    }
}

在要開啟參數(shù)校驗(yàn)的類上方添加Validated注解,代表該類開啟參數(shù)校驗(yàn),訪問http://localhost:8080/t1,發(fā)現(xiàn)當(dāng)沒有傳來參數(shù)時(shí),會拋出 ConstraintViolationException 異常。 接下來讓我們測試一下啪

1.2 測試結(jié)果

可以看到不能為空,表示t1路徑下第一個(gè)參數(shù)不能為空,接下來我們輸入?yún)?shù)看看

如果我們不想輸出這種提示信息,我們還可以自定義提示信息,這時(shí)就要在注解添加message屬性,屬性值代表錯誤信息

public String t1(@NotBlank(message = "名字不能為空") String name){
    System.out.println(name);
    return name;
}

再運(yùn)行看看

這樣就正常了。

二、異常處理

好嘍,在上面我們可以看到異常頁面不太好看,這樣我們可以配置自定義的程序出現(xiàn)錯誤跳轉(zhuǎn)的錯誤頁面。

當(dāng)拋出 ConstraintViolationException 異常后,我們可以使用SpringMVC的異常處理器,也可以使用SpringBoot自帶的異常處理機(jī)制。
當(dāng)程序出現(xiàn)了異常,SpringBoot會使用自帶的 BasicErrorController 對象處理異常。該處理器會默認(rèn)跳轉(zhuǎn)到/resources/templates/error.html頁面。

2.1 錯誤頁面

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>錯誤頁面</title>
</head>
<body>
<h1>服務(wù)器開小差了~</h1>
</body>
</html>

2.2 測試結(jié)果

OK,可以正常顯示錯誤頁面

三、參數(shù)校驗(yàn)相關(guān)注解

參數(shù)校驗(yàn)相關(guān)注解

注解作用
@NotNull判斷包裝類是否為null
@NotBlank判斷字符串是否為null或者是空串(去掉首尾空格)
@NotEmpty判斷集合是否為空
@Length判斷字符的長度(最大或者最小)
@Min判斷數(shù)值最小值
@Max判斷數(shù)值最大值
@Email判斷郵箱是否合法

3.1 測試Controller

    @RequestMapping("/t2")
    public String t2(@NotBlank @Length(min = 1,max = 5) String name,
                     @NotNull @Min(0) @Max(150) Integer age,
                     @NotEmpty @RequestParam List<String> address,
                     @NotBlank @Email String email){
        System.out.println(name);
        System.out.println(age);
        System.out.println(address);
        System.out.println(email);
        return "請求成功";
    }

OK,我們這個(gè)測試方法主要就是有四個(gè)參數(shù),第一個(gè)name不能為空,且長度最小為1且不能超過5,第二個(gè)參數(shù)是年齡age,最小值為0且不能超過150, 第三個(gè)參數(shù)值就是address,這是一個(gè)集合,不能為空,第四個(gè)參數(shù)是郵箱,郵箱格式也要正確。

3.2 測試結(jié)果

OK,接下來我們測試一下什么都沒有輸入,直接測試

接下來輸入如下圖

四、對象類型參數(shù)校驗(yàn)

SpringBoot也可以校驗(yàn)對象參數(shù)中的每個(gè)屬性,用法如下:

4.1 添加實(shí)體類

package com.example.springbootdemo4.pojo;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
public class Student {
    @NotBlank(message = "姓名不能為空")
    private String name;
    @NotNull(message = "年齡不能沒有") @Min(6) @Max(18)
    private Integer age;
    public Student() {
    }
    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student [" +
                "name='" + name + '\'' +
                ", age=" + age +
                " ]";
    }
}

4.2 添加測試方法

    @RequestMapping("/t3")
    public String t3(@Validated Student student, BindingResult brs){
        // 判斷是否有參數(shù)異常
        if(brs.hasErrors()){
            // 所有參數(shù)異常
            List<ObjectError> list = brs.getAllErrors();
            // 遍歷參數(shù)異常輸出信息
            list.forEach(System.out::println);
            return "參數(shù)異常";
        }
        System.out.println(student);
        return "success";
    }

4.3 測試結(jié)果

可以看到控制臺輸出可以識別到,

Ok,這里亂碼是因?yàn)檫@個(gè)模塊的JDK版本較高,和項(xiàng)目版本不切合,但是我們可以知道他是表示年齡要在6-18的就好啦

到此這篇關(guān)于SpringBoot參數(shù)校驗(yàn)示例詳解的文章就介紹到這了,更多相關(guān)SpringBoot參數(shù)校驗(yàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot @Scope與@RefreshScope注解使用詳解

    SpringBoot @Scope與@RefreshScope注解使用詳解

    spring的bean管理中,每個(gè)bean都有對應(yīng)的scope。在BeanDefinition中就已經(jīng)指定scope,默認(rèn)的RootBeanDefinition的scope是prototype類型,使用@ComponentScan掃描出的BeanDefinition會指定是singleton,最常使用的也是singleton
    2022-11-11
  • Spring 開發(fā)過程中Value 注解的使用場景

    Spring 開發(fā)過程中Value 注解的使用場景

    這篇文章主要介紹了Spring 開發(fā)過程中Value 注解的使用場景,幫助大家更好的理解和使用spring框架,感興趣的朋友可以了解下
    2020-11-11
  • java讀取properties配置文件的方法

    java讀取properties配置文件的方法

    這篇文章主要介紹了java讀取properties配置文件的方法,涉及java操作properties配置文件的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 新手易懂的Java客戶管理小項(xiàng)目

    新手易懂的Java客戶管理小項(xiàng)目

    本篇文章是作為一個(gè)很適合新手閱讀的初級小項(xiàng)目,客戶管理,它主要實(shí)現(xiàn)數(shù)據(jù)庫的增刪查改操作,管理每位客戶的不同信息,如果你也是開始學(xué)Java不久,這篇文章將很適合你
    2021-11-11
  • Java實(shí)現(xiàn)掃雷游戲的代碼分享

    Java實(shí)現(xiàn)掃雷游戲的代碼分享

    windows自帶的游戲《掃雷》是陪伴了無數(shù)人的經(jīng)典游戲,本文將利用Java語言實(shí)現(xiàn)這一經(jīng)典的游戲,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • SpringBoot集成Quartz實(shí)現(xiàn)定時(shí)任務(wù)的方法

    SpringBoot集成Quartz實(shí)現(xiàn)定時(shí)任務(wù)的方法

    Quartz是一個(gè)定時(shí)任務(wù)框架,其他介紹網(wǎng)上也很詳盡。這里要介紹一下Quartz里的幾個(gè)非常核心的接口。通過實(shí)例代碼給大家講解SpringBoot集成Quartz實(shí)現(xiàn)定時(shí)任務(wù)的方法,感興趣的朋友一起看看吧
    2020-05-05
  • 在Java編程中使用正則表達(dá)式

    在Java編程中使用正則表達(dá)式

    這篇文章主要介紹了在Java編程中使用正則表達(dá)式,注意使用matches()方法檢測一下Java對正則表達(dá)式的支持情況,需要的朋友可以參考下
    2015-08-08
  • Spring MVC 與 CORS跨域的詳細(xì)介紹

    Spring MVC 與 CORS跨域的詳細(xì)介紹

    本文介紹了 CORS 的知識以及如何在 Spring MVC 中配置 CORS,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java踩坑記錄之Arrays.AsList

    Java踩坑記錄之Arrays.AsList

    這篇文章主要給大家介紹了關(guān)于Java踩坑記錄之Arrays.AsList的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 詳解Java并發(fā)編程之原子類

    詳解Java并發(fā)編程之原子類

    這篇文章主要為大家介紹了Java并發(fā)編程之原子類介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評論