最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

首先得添加依賴

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

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

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

1.2 測試結(jié)果

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

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

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

再運行看看

這樣就正常了。

二、異常處理

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

當拋出 ConstraintViolationException 異常后,我們可以使用SpringMVC的異常處理器,也可以使用SpringBoot自帶的異常處理機制。
當程序出現(xiàn)了異常,SpringBoot會使用自帶的 BasicErrorController 對象處理異常。該處理器會默認跳轉(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ù)校驗相關(guān)注解

參數(shù)校驗相關(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,我們這個測試方法主要就是有四個參數(shù),第一個name不能為空,且長度最小為1且不能超過5,第二個參數(shù)是年齡age,最小值為0且不能超過150, 第三個參數(shù)值就是address,這是一個集合,不能為空,第四個參數(shù)是郵箱,郵箱格式也要正確。

3.2 測試結(jié)果

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

接下來輸入如下圖

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

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

4.1 添加實體類

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,這里亂碼是因為這個模塊的JDK版本較高,和項目版本不切合,但是我們可以知道他是表示年齡要在6-18的就好啦

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

相關(guān)文章

  • Spring Boot如何使用Spring Security進行安全控制

    Spring Boot如何使用Spring Security進行安全控制

    要實現(xiàn)訪問控制的方法多種多樣,可以通過Aop、攔截器實現(xiàn),也可以通過框架實現(xiàn),本文將具體介紹在Spring Boot中如何使用Spring Security進行安全控制。
    2017-04-04
  • Mybatis ResultType如何處理返回類型

    Mybatis ResultType如何處理返回類型

    這篇文章主要介紹了Mybatis ResultType如何處理返回類型方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java Comparator比較器實例解析

    Java Comparator比較器實例解析

    這篇文章主要介紹了Java Comparator比較器實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • 詳解SpringBoot上傳圖片到阿里云的OSS對象存儲中

    詳解SpringBoot上傳圖片到阿里云的OSS對象存儲中

    這篇文章主要介紹了SpringBoot上傳圖片到阿里云的OSS對象存儲中,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Java與C++實現(xiàn)相同的MD5加密算法簡單實例

    Java與C++實現(xiàn)相同的MD5加密算法簡單實例

    下面小編就為大家?guī)硪黄狫ava與C++實現(xiàn)相同的MD5加密算法簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Java八種基本變量作為類的成員變量的默認值操作

    Java八種基本變量作為類的成員變量的默認值操作

    這篇文章主要介紹了Java八種基本變量作為類的成員變量的默認值操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java操作mysql實現(xiàn)增刪改查的方法

    java操作mysql實現(xiàn)增刪改查的方法

    這篇文章主要介紹了java操作mysql實現(xiàn)增刪改查的方法,結(jié)合實例形式分析了java操作mysql數(shù)據(jù)庫進行增刪改查的具體實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下
    2017-05-05
  • 啟動 Eclipse 彈出 Failed to load the JNI shared library jvm.dll 錯誤的解決方法

    啟動 Eclipse 彈出 Failed to load the JNI shared library jvm.dll

    這篇文章主要介紹了有時候,新電腦上回碰到打開Eclipse時,彈出提示“Failed to load the JNI shared library jvm.dll”錯誤,這里給大家分享解決方案
    2016-08-08
  • Feign?請求動態(tài)URL方式

    Feign?請求動態(tài)URL方式

    這篇文章主要介紹了Feign?請求動態(tài)URL方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java開發(fā)環(huán)境不再需要配置classpath問題

    Java開發(fā)環(huán)境不再需要配置classpath問題

    這篇文章主要介紹了Java開發(fā)環(huán)境不再需要配置classpath問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

长沙市| 抚松县| 永济市| 永善县| 余庆县| 德令哈市| 元阳县| 浮山县| 竹溪县| 楚雄市| 庄浪县| 吉木萨尔县| 翁牛特旗| 景德镇市| 山丹县| 水城县| 揭阳市| 平乡县| 手机| 阿拉善右旗| 钟祥市| 宁化县| 调兵山市| 金华市| 白河县| 西峡县| 仁化县| 莱阳市| 民和| 闵行区| 陆良县| 万年县| 商丘市| 昌江| 远安县| 旬邑县| 南通市| 洪江市| 明光市| 岳池县| 元阳县|