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

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

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

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

原留言如下:

有坑,你試試^A-\\d{12}-\\d{4}$,這條正則經(jīng)過(guò)validate這個(gè)方法無(wú)論參數(shù)寫(xiě)的對(duì)不對(duì)都會(huì)報(bào)驗(yàn)證錯(cuò)誤,而用main方法測(cè)試是正常的。。

話說(shuō),針對(duì)這種回復(fù)我是不太信了,直覺(jué)告訴我,肯定是這位粉絲用錯(cuò)了。但既然粉絲有疑問(wèn)還是需要專(zhuān)門(mén)寫(xiě)一個(gè)demo來(lái)驗(yàn)證一下的。說(shuō)寫(xiě)就寫(xiě)。

SpringBoot集成validation

集成過(guò)程非常簡(jiǎn)單,在原項(xiàng)目的pom文件中直接引入如下依賴:

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

引入之后,便可以在項(xiàng)目中使用@Valid等來(lái)進(jìn)行校驗(yàn)了。

這里寫(xiě)一個(gè)簡(jiǎn)單的示例基于@Valid來(lái)驗(yàn)證提交的參數(shù)是否合法。首先建一個(gè)實(shí)體類(lèi),LoginForm(使用了Lombok):

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

順便校驗(yàn)了一下其他的參數(shù),最后一個(gè)other字段用來(lái)校驗(yàn)粉絲提出疑問(wèn)的正則表達(dá)式。

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

@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ù)校驗(yàn)成功!");
 }
 }
}

如果參數(shù)校驗(yàn)出錯(cuò),會(huì)打印錯(cuò)誤日志,如果校驗(yàn)成功則打印“參數(shù)校驗(yàn)成功!”。因?yàn)槭荘ost請(qǐng)求,咱們就寫(xiě)一個(gè)針對(duì)該服務(wù)的單元測(cè)試:

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

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

相關(guān)文章

  • 線程池ThreadPoolExecutor使用簡(jiǎn)介與方法實(shí)例

    線程池ThreadPoolExecutor使用簡(jiǎn)介與方法實(shí)例

    今天小編就為大家分享一篇關(guān)于線程池ThreadPoolExecutor使用簡(jiǎn)介與方法實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Java實(shí)現(xiàn)猜字小游戲

    Java實(shí)現(xiàn)猜字小游戲

    這篇文章給大家分享小編隨手寫(xiě)的猜字小游戲,基于java代碼寫(xiě)的,感興趣的朋友跟隨小編一起看看吧
    2019-11-11
  • 分析并發(fā)編程之LongAdder原理

    分析并發(fā)編程之LongAdder原理

    LongAdder類(lèi)是JDK1.8新增的一個(gè)原子性操作類(lèi)。AtomicLong通過(guò)CAS算法提供了非阻塞的原子性操作,相比受用阻塞算法的同步器來(lái)說(shuō)性能已經(jīng)很好了,但是JDK開(kāi)發(fā)組并不滿足于此,因?yàn)榉浅8悴l(fā)的請(qǐng)求下AtomicLong的性能是不能讓人接受的
    2021-06-06
  • Struts2學(xué)習(xí)筆記(6)-簡(jiǎn)單的數(shù)據(jù)校驗(yàn)

    Struts2學(xué)習(xí)筆記(6)-簡(jiǎn)單的數(shù)據(jù)校驗(yàn)

    這篇文章主要介紹Struts2中的數(shù)據(jù)校驗(yàn),通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明,希望能給大家做一個(gè)參考。
    2016-06-06
  • Java常用的時(shí)間工具類(lèi)實(shí)例

    Java常用的時(shí)間工具類(lèi)實(shí)例

    這篇文章主要介紹了Java常用的時(shí)間工具類(lèi),結(jié)合具體實(shí)例形式分析了java日期時(shí)間的常用轉(zhuǎn)換、判斷、輸出相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • SpringBoot整合Redis實(shí)現(xiàn)附近位置查找(LBS)功能

    SpringBoot整合Redis實(shí)現(xiàn)附近位置查找(LBS)功能

    Redis 提供了 GEO 數(shù)據(jù)結(jié)構(gòu),可以高效地存儲(chǔ)和查詢地理位置數(shù)據(jù),本文將介紹如何使用 Spring Boot + Redis 來(lái)實(shí)現(xiàn)附近位置查找,需要的可以了解下
    2025-03-03
  • springboot整合logback打印日志,分文件

    springboot整合logback打印日志,分文件

    本文主要介紹了springboot整合logback打印日志,分文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • JAVA中阻止類(lèi)的繼承(官方和非官方)

    JAVA中阻止類(lèi)的繼承(官方和非官方)

    在面向?qū)ο蟮睦碚撝? 有一些方案要求你用一個(gè)辦法來(lái)聲明一個(gè)不可繼承的類(lèi)。一般而言,如果類(lèi)提供的功能不應(yīng)該被改變,或者更恰當(dāng)?shù)恼f(shuō),是被覆蓋(override)的時(shí)候才會(huì)出現(xiàn)這種情況。在這篇文章里,我討論在JAVA語(yǔ)言中的實(shí)現(xiàn)辦法--官方和非官方的辦法
    2014-01-01
  • SpringBoot實(shí)現(xiàn)異步消息處理的代碼示例

    SpringBoot實(shí)現(xiàn)異步消息處理的代碼示例

    在現(xiàn)代應(yīng)用程序中,異步消息處理是一項(xiàng)至關(guān)重要的任務(wù)。它可以提高應(yīng)用程序的性能、可伸縮性和可靠性,同時(shí)也可以提供更好的用戶體驗(yàn),本文將介紹如何使用Spring Boot實(shí)現(xiàn)異步消息處理,并提供相應(yīng)的代碼示例
    2023-06-06
  • 使用hibernate和struts2實(shí)現(xiàn)分頁(yè)功能的示例

    使用hibernate和struts2實(shí)現(xiàn)分頁(yè)功能的示例

    本篇文章主要介紹了使用hibernate和struts2實(shí)現(xiàn)分頁(yè)功能,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01

最新評(píng)論

惠州市| 广宗县| 特克斯县| 西贡区| 舞钢市| 垣曲县| 永善县| 于都县| 宜州市| 吴江市| 宁远县| 乌苏市| 大宁县| 广昌县| 芦山县| 云浮市| 宁晋县| 洛浦县| 栾城县| 郯城县| 浏阳市| 黑河市| 汉沽区| 海伦市| 交口县| 太谷县| 达拉特旗| 明溪县| 福清市| 保康县| 孟津县| 庄河市| 区。| 遵化市| 富平县| 龙里县| 雅安市| 铁岭市| 连州市| 湖北省| 柳河县|