激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - springboot使用校驗(yàn)框架validation校驗(yàn)的示例

springboot使用校驗(yàn)框架validation校驗(yàn)的示例

2021-04-06 11:53雙斜杠少年 Java教程

這篇文章主要介紹了springboot使用校驗(yàn)框架validation校驗(yàn)的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

b/s系統(tǒng)中對(duì)http請(qǐng)求數(shù)據(jù)的校驗(yàn)多數(shù)在客戶端進(jìn)行,這也是出于簡(jiǎn)單及用戶體驗(yàn)性上考慮,但是在一些安全性要求高的系統(tǒng)中服務(wù)端校驗(yàn)是不可缺少的。

Spring3支持JSR-303驗(yàn)證框架,JSR-303 是Java EE 6 中的一項(xiàng)子規(guī)范,叫做BeanValidation,官方參考實(shí)現(xiàn)是hibernate Validator(與Hibernate ORM 沒有關(guān)系),JSR 303 用于對(duì)Java Bean 中的字段的值進(jìn)行驗(yàn)證。

Validator主要是校驗(yàn)用戶提交的數(shù)據(jù)的合理性的,比如是否為空了,密碼長(zhǎng)度是否大于6位,是否是純數(shù)字的,等等。那么在spring boot怎么使用這么強(qiáng)大的校驗(yàn)框架呢。

validationspringboot 結(jié)合

1. bean 中添加標(biāo)簽

部分代碼:

標(biāo)簽需要加在屬性上,@NotBlank 標(biāo)簽含義文章末尾有解釋

?
1
2
3
4
5
public class User {
  private Integer id;
  @NotBlank(message = "{user.name.notBlank}")
  private String name;
  private String username;

2. Controller中開啟驗(yàn)證

在Controller 中 請(qǐng)求參數(shù)上添加@Validated 標(biāo)簽開啟驗(yàn)證

?
1
2
3
4
@RequestMapping(method = RequestMethod.POST)
public User create(@RequestBody @Validated User user) {
  return userService.create(user);
}

3. resource 下新建錯(cuò)誤信息配置文件

在resource 目錄下新建提示信息配置文件“ValidationMessages.properties“

注意:名字必須為“ValidationMessages.properties“ 因?yàn)镾pringBoot自動(dòng)讀取classpath中的ValidationMessages.properties里的錯(cuò)誤信息

ValidationMessages.properties 文件的編碼為ASCII。數(shù)據(jù)類型為 key value 。key“user.name.notBlank“為第一步 bean的標(biāo)簽 大括號(hào)里面對(duì)應(yīng)message的值

value 為提示信息 ,但是是ASCII 。(內(nèi)容為“名字不能為空“)

springboot使用校驗(yàn)框架validation校驗(yàn)的示例

4. 自定義異常處理器,捕獲錯(cuò)誤信息

當(dāng)驗(yàn)證不通過時(shí)會(huì)拋異常出來,異常的message 就是 ValidationMessages.properties 中配置的提示信息。此處定義異常處理器。捕獲異常信息(因?yàn)轵?yàn)證不通過的項(xiàng)可能是多個(gè)所以統(tǒng)一捕獲處理),并拋給前端。(此處是前后端分離開發(fā))

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void MethodArgumentNotValidException(Exception ex, HttpServletRequest request, HttpServletResponse response) {
   logger.error( ":" + CommonUtil.getHttpClientInfo(request), ex);
   MethodArgumentNotValidException c = (MethodArgumentNotValidException) ex;
   List<ObjectError> errors =c.getBindingResult().getAllErrors();
   StringBuffer errorMsg=new StringBuffer();
   errors.stream().forEach(x -> errorMsg.append(x.getDefaultMessage()).append(";"));
   pouplateExceptionResponse(response, HttpStatus.INTERNAL_SERVER_ERROR, errorMsg.toString());
 }
 
 
private void pouplateExceptionResponse(HttpServletResponse response, HttpStatus errorCode, String errorMessage) {
   try {
     response.sendError(errorCode.value(), errorMessage);
   } catch (IOException e) {
     logger.error("failed to populate response error", e);
   }
 }

5. 附上部分標(biāo)簽含義

 

限制 說明
@Null 限制只能為null
@NotNull 限制必須不為null
@AssertFalse 限制必須為false
@AssertTrue 限制必須為true
@DecimalMax(value) 限制必須為一個(gè)不大于指定值的數(shù)字
@DecimalMin(value) 限制必須為一個(gè)不小于指定值的數(shù)字
@Digits(integer,fraction) 限制必須為一個(gè)小數(shù),且整數(shù)部分的位數(shù)不能超過integer,小數(shù)部分的位數(shù)不能超過fraction
@Future 限制必須是一個(gè)將來的日期
@Max(value) 限制必須為一個(gè)不大于指定值的數(shù)字
@Min(value) 限制必須為一個(gè)不小于指定值的數(shù)字
@Past 限制必須是一個(gè)過去的日期
@Pattern(value) 限制必須符合指定的正則表達(dá)式
@Size(max,min) 限制字符長(zhǎng)度必須在min到max之間
@Past 驗(yàn)證注解的元素值(日期類型)比當(dāng)前時(shí)間早
@NotEmpty 驗(yàn)證注解的元素值不為null且不為空(字符串長(zhǎng)度不為0、集合大小不為0)
@NotBlank 驗(yàn)證注解的元素值不為空(不為null、去除首位空格后長(zhǎng)度為0),不同于@NotEmpty,@NotBlank只應(yīng)用于字符串且在比較時(shí)會(huì)去除字符串的空格
@Email 驗(yàn)證注解的元素值是Email,也可以通過正則表達(dá)式和flag指定自定義的email格式

 

示例

?
1
2
@Pattern(regexp="^[a-zA-Z0-9]+$",message="{account.username.space}")
@Size(min=3,max=20,message="{account.username.size}")

示例2

在這里我們主要是使用注解進(jìn)行學(xué)習(xí)。我們先說說我們的需求:

我們有一個(gè)demo.html,在頁(yè)面上有兩個(gè)元素 姓名輸入框,密碼輸入庫(kù),提交按鈕。

提交到后臺(tái)之后,使用Validator進(jìn)行校驗(yàn),然后如果存在錯(cuò)誤,轉(zhuǎn)發(fā)到demo.html,

我們先編寫一個(gè)實(shí)體類接收用戶的輸入,以及使用Validator注解校驗(yàn):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.kfit.demo;
 
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
public class Demo { 
  private long id;
  @NotEmpty(message="姓名不能為空")
  private String name; 
  @NotEmpty(message="密碼不能為空")
  @Length(min=6,message="密碼長(zhǎng)度不能小于6位")
  private String password;
 
  publiclong getId() {
    return id;
  }
 
  publicvoid setId(longid) {
    this.id = id;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public String getPassword() {
    return password;
  }
 
  public void setPassword(String password) {
    this.password = password;
  }
 
  @Override
  public String toString() {
    return "Demo [id=" + id + ", name=" + name + ", password=" + password + "]";
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/u012373815/article/details/72049796

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人毛片视频在线观看 | 久久影院免费观看 | 蜜桃视频观看麻豆 | 一区二区久久久久草草 | 精品呦女 | 亚洲精品自在在线观看 | 一区二区三区欧美在线 | 亚洲第一成网站 | 国产一区二区精彩视频 | 成人三级电影网站 | 91aa.app| 精品国产91久久久久 | 亚洲精品一区二区三区免 | 久久综合入口 | 91成人免费看 | 国产88久久久国产精品免费二区 | 亚洲成人免费影视 | 久久精品日产第一区二区三区 | 91短视频免费 | 一区二区三区日本在线观看 | 成人影片在线免费观看 | 久久99精品久久久久久国产越南 | 91精品国产91久久久久久不卞 | 男女视频免费看 | 中文字幕在线观看网址 | 亚洲第一综合 | 欧美人的天堂一区二区三区 | 欧美成人午夜影院 | 草免费视频 | 国产精品久久久久久久久粉嫩 | 最新亚洲国产 | 在线观看免费污视频 | 免费黄色欧美视频 | 久久青草热 | 爱逼av | 国产午夜精品久久久久久久蜜臀 | 超碰97青青草 | 精品久久久久久亚洲精品 | www.99av| 一本色道久久99精品综合蜜臀 | 一区二区高清视频在线观看 |