摘要:使用和實(shí)現(xiàn)請(qǐng)求參數(shù)校驗(yàn)統(tǒng)一異常處理最開始我使用的是。后臺(tái)接口使用方法接收參數(shù),特別麻煩。接收之后,我們還得進(jìn)行一連串的參數(shù)校驗(yàn)。使用接收參數(shù),自動(dòng)將前端參數(shù)解析封裝成實(shí)體類。統(tǒng)一異常處理類實(shí)現(xiàn)完成。
springmvc使用@Valid和@ControllerAdvise實(shí)現(xiàn)請(qǐng)求參數(shù)校驗(yàn)統(tǒng)一異常處理
最開始我使用的是jsp+servlet。后臺(tái)接口使用 request.getParameter(key) 方法接收參數(shù),特別麻煩。接收之后,我們還得進(jìn)行一連串的參數(shù)校驗(yàn)?,F(xiàn)在使用springboot的mvc。使用@ReuestBody接收參數(shù),自動(dòng)將前端參數(shù)解析封裝成實(shí)體類。很方便,但是還是需要校驗(yàn)參數(shù)。下面我介紹一個(gè)簡(jiǎn)單的方式,通過@Valid和@ControllerAdvice注解實(shí)現(xiàn)參數(shù)校驗(yàn)和統(tǒng)一異常處理。
統(tǒng)一異常處理首先介紹統(tǒng)一異常處理,創(chuàng)建類GlobalExceptionHandler
通過ControllerAdvice和@ExceptionHandler注解,在Controller中發(fā)生的異常錯(cuò)誤就到指定異常處理方法進(jìn)行處理。
查看一下MethodArgumentNotValidException這個(gè)類的源碼
它繼承了Exception,包含參數(shù)和錯(cuò)誤。BindError參數(shù)實(shí)現(xiàn)了error。
統(tǒng)一異常處理類實(shí)現(xiàn)完成。
我們?cè)贎RequestBody或者其它注解前面加上@Valid,就可以對(duì)實(shí)體類參數(shù)進(jìn)行校驗(yàn)
通過@Valid注解我們就對(duì)請(qǐng)求的參數(shù)進(jìn)行驗(yàn)證
通過javax的@NotNUll等注解可以進(jìn)行校驗(yàn)。
如果參數(shù)是一個(gè)實(shí)體類,這個(gè)實(shí)體類的參數(shù)也需校驗(yàn),需要在參數(shù)上加上@Valid注解
ok,現(xiàn)在參數(shù)不對(duì)的話,自動(dòng)跳到GlobalExceptionHandler類的指定方法進(jìn)行處理。
未完待續(xù),有問題請(qǐng)留言!
個(gè)人博客地址: https://blog.ailijie.top/arch...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75291.html
摘要:只要有一個(gè)攔截器不放行,不能執(zhí)行完成號(hào)不放行和號(hào)不放行測(cè)試結(jié)果總結(jié)只有前邊的攔截器方法放行,下邊的攔截器的才執(zhí)行。至于他們的攔截器鏈的調(diào)用順序,和的是沒有差別的。 前言 本博文主要講解的知識(shí)點(diǎn)如下: 校驗(yàn)器 統(tǒng)一處理異常 RESTful 攔截器 Validation 在我們的Struts2中,我們是繼承ActionSupport來實(shí)現(xiàn)校驗(yàn)的...它有兩種方式來實(shí)現(xiàn)校驗(yàn)的功能 手寫...
摘要:否則非法請(qǐng)求參數(shù)小則影響用戶體驗(yàn)或者產(chǎn)生垃圾數(shù)據(jù),大則會(huì)拖跨整個(gè)系統(tǒng)其次,手工對(duì)所有的參數(shù)進(jìn)行校驗(yàn)相當(dāng)繁瑣,容易出錯(cuò),而且最后,通過工具來完成其實(shí)是比較好的方式,但是必須讓工具變得優(yōu)雅一些。 聲明:本文屬原創(chuàng)文章,始發(fā)于公號(hào):程序員自學(xué)之道,同步發(fā)布到 sf,轉(zhuǎn)載請(qǐng)注明出處。 不夠好的方案 在 Web 開發(fā)中, 我們經(jīng)常需要校驗(yàn)各種參數(shù),這是一件繁瑣又重要的事情,對(duì)于很多人來說,在做參...
摘要:是目前最流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。協(xié)議,是一個(gè)無狀態(tài)協(xié)議,即所有的狀態(tài)都保存在服務(wù)器端。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是表現(xiàn)層狀態(tài)轉(zhuǎn)化。具體說,就是協(xié)議里面,四個(gè)表示操作方式的動(dòng)詞。 一、SpringMVC概述 Spring為展現(xiàn)層提供的基于MVC設(shè)計(jì)理念的優(yōu)秀的Web框架,是目前最主流的MVC框架之一 Spring3.0之后全面超越Struts2,成為最優(yōu)秀的MVC框架 S...
摘要:所以就有今天的話題利用注解對(duì)進(jìn)行校驗(yàn)。利用注解對(duì)進(jìn)行校驗(yàn),主要是利用框架,實(shí)現(xiàn)了的接口關(guān)于校驗(yàn)的接口,直接使用非常方便,省時(shí)省力。 最近寫業(yè)務(wù)代碼,因?yàn)轫撁鎻?fù)雜,導(dǎo)致對(duì)應(yīng)的Bean屬性非常多,而產(chǎn)品大佬又提出各種校驗(yàn)要求。 emmmmmm......如果寫if條件來校驗(yàn),那簡(jiǎn)直是又臭又長(zhǎng)。 所以就有今天的話題——利用注解對(duì)Bean進(jìn)行校驗(yàn)。 利用注解對(duì)Bean進(jìn)行校驗(yàn),主要是利用hib...
摘要:我們可不可以提供一個(gè)公共的入口進(jìn)行統(tǒng)一的異常處理呢當(dāng)然可以。一般我們可以在地址上帶上版本號(hào),也可以在參數(shù)上帶上版本號(hào),還可以再里帶上版本號(hào),這里我們?cè)诘刂飞蠋习姹咎?hào),大致的地址如,其中,即代表的是版本號(hào)。 上一篇帶領(lǐng)大家初步了解了如何使用 Spring Boot 搭建框架,通過 Spring Boot 和傳統(tǒng)的 SpringMVC 架構(gòu)的對(duì)比,我們清晰地發(fā)現(xiàn) Spring Boot ...
閱讀 669·2023-04-25 15:49
閱讀 3121·2021-09-22 15:13
閱讀 1262·2021-09-07 10:13
閱讀 3484·2019-08-29 18:34
閱讀 2567·2019-08-29 15:22
閱讀 513·2019-08-27 10:52
閱讀 691·2019-08-26 18:27
閱讀 3028·2019-08-26 13:44