亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot集成validation校驗參數(shù)遇到的坑

 更新時間:2020年12月17日 17:29:09   作者:程序新視界  
這篇文章主要介紹了SpringBoot集成validation校驗參數(shù)遇到的坑,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

公眾號中分享了一篇文章,關(guān)于SpringBoot集成validation校驗參數(shù)的,粉絲留言說有坑。

原留言如下:

有坑,你試試^A-\\d{12}-\\d{4}$,這條正則經(jīng)過validate這個方法無論參數(shù)寫的對不對都會報驗證錯誤,而用main方法測試是正常的。。

話說,針對這種回復(fù)我是不太信了,直覺告訴我,肯定是這位粉絲用錯了。但既然粉絲有疑問還是需要專門寫一個demo來驗證一下的。說寫就寫。

SpringBoot集成validation

集成過程非常簡單,在原項目的pom文件中直接引入如下依賴:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

引入之后,便可以在項目中使用@Valid等來進行校驗了。

這里寫一個簡單的示例基于@Valid來驗證提交的參數(shù)是否合法。首先建一個實體類,LoginForm(使用了Lombok):

@Data
public class LoginForm {
 @NotBlank(message = "郵箱不能為空")
 @Email
 private String email;
 @NotBlank(message = "密碼不能為空")
 @Length(min = 6,message = "密碼長度最小為6位")
 private String password;
 @NotBlank
 @Pattern(regexp = "^A-\\d{12}-\\d{4}$",message = "格式錯誤")
 private String other;
}

順便校驗了一下其他的參數(shù),最后一個other字段用來校驗粉絲提出疑問的正則表達式。

然后,在創(chuàng)建一個Controller類:

@Slf4j
@RestController
public class LoginController {

 @PostMapping("/login")
 public void login(@Valid LoginForm loginForm, BindingResult bindingResult) {
 log.info("loginForm:{}", loginForm);
 if (bindingResult.hasErrors()) {
  for (ObjectError error : bindingResult.getAllErrors()) {
  log.info("error:{}", error.getDefaultMessage());
  }
 } else {
  log.info("參數(shù)校驗成功!");
 }
 }
}

如果參數(shù)校驗出錯,會打印錯誤日志,如果校驗成功則打印“參數(shù)校驗成功!”。因為是Post請求,咱們就寫一個針對該服務(wù)的單元測試:

@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
@AutoConfigureMockMvc
@WebAppConfiguration
public class TestLoginController {

 @Autowired
 private WebApplicationContext webApplicationContext;

 @Autowired
 private MockMvc mockMvc;

 @Before
 public void setUp() {
 mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
 }

 @Test
 public void testLogin() throws Exception {
 MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/login")
  .param("email", "541075754@qq.com")
  .param("password", "123456")
  .param("other", "A-123456789012-1234")
  .accept(MediaType.APPLICATION_JSON))
  .andDo(MockMvcResultHandlers.print())
  .andReturn();
 int status = mvcResult.getResponse().getStatus();   //得到返回代碼
 String content = mvcResult.getResponse().getContentAsString(); //得到返回結(jié)果
 log.info("返回結(jié)果content={}", content);
 Assert.assertEquals(200, status); 
 }
}

執(zhí)行打印測試,查看日志,發(fā)現(xiàn)校驗通過,并沒有出錯。至此,粉絲提出的質(zhì)疑并不成立。而粉絲遇到的問題,很可能是哪個細(xì)節(jié)導(dǎo)致了校驗失敗,而他總結(jié)的經(jīng)驗就是validation校驗參數(shù)有坑。

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

相關(guān)文章

  • 詳解maven的install的作用

    詳解maven的install的作用

    這篇文章主要介紹了詳解maven的install的作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • MyBatis接口的簡單實現(xiàn)原理分析

    MyBatis接口的簡單實現(xiàn)原理分析

    這里僅僅舉個簡單例子來說明原理,不是完全針對MyBatis的,這種思想我們也可以應(yīng)用在其他地方。地mybatis接口實現(xiàn)原理感興趣的朋友一起看看吧
    2017-07-07
  • Automapper實現(xiàn)自動映射的實例代碼

    Automapper實現(xiàn)自動映射的實例代碼

    這篇文章主要介紹了Automapper實現(xiàn)自動映射的實例代碼,需要的朋友可以參考下
    2017-09-09
  • Java基礎(chǔ)之SpringBoot整合knife4j

    Java基礎(chǔ)之SpringBoot整合knife4j

    Swagger現(xiàn)在已經(jīng)成了最流行的接口文檔生成與管理工具,但是你是否在用的時候也在吐槽,它是真的不好看,接口測試的json數(shù)據(jù)沒法格式化,測試地址如果更改了還要去改配置,接口測試時增加token驗證是真的麻煩…針對Swagger的種種缺點,Knife4j就呼之欲出了.需要的朋友可以參考下
    2021-05-05
  • Java中初始化塊詳解及實例代碼

    Java中初始化塊詳解及實例代碼

    這篇文章主要介紹了Java中初始化塊詳解及實例代碼的相關(guān)資料,在Java中,有兩種初始化塊:靜態(tài)初始化塊和非靜態(tài)初始化塊,需要的朋友可以參考下
    2017-03-03
  • Java五種方式實現(xiàn)多線程循環(huán)打印問題

    Java五種方式實現(xiàn)多線程循環(huán)打印問題

    本文主要介紹了Java五種方式實現(xiàn)多線程循環(huán)打印問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • java并發(fā)編程之深入理解Synchronized的使用

    java并發(fā)編程之深入理解Synchronized的使用

    文詳細(xì)講述了線程、進程的關(guān)系及在操作系統(tǒng)中的表現(xiàn),這是多線程學(xué)習(xí)必須了解的基礎(chǔ)。本文將接著講一下Java線程同步中的一個重要的概念synchronized,希望能夠給你有所幫助
    2021-06-06
  • 教你一步到位部署運行MyBatis3源碼(保姆級)

    教你一步到位部署運行MyBatis3源碼(保姆級)

    一個框架的運行流程從最簡單的一個helloworld來看其源碼就能了解到框架的原理是什么,這篇文章主要給大家介紹了關(guān)于如何一步到位部署運行MyBatis3源碼的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Springboot靜態(tài)資源的訪問方法介紹

    Springboot靜態(tài)資源的訪問方法介紹

    最近在做SpringBoot項目的時候遇到了“白頁”問題,通過查資料對SpringBoot訪問靜態(tài)資源做了總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java下載文件時文件名亂碼問題解決辦法

    Java下載文件時文件名亂碼問題解決辦法

    我最近在開發(fā)時遇到了文件另存為時文件名出現(xiàn)亂碼,在火狐上正常的文件名,在IE中又出現(xiàn)亂碼問題,然后好不容易在IE下調(diào)試好了文件名亂碼問題,在火狐下又出現(xiàn)亂碼,最后終于感覺這樣是能解決了。具體如下:
    2013-04-04

最新評論