文章詳情頁
spring MVC實(shí)踐需要注意的地方
瀏覽:8日期:2023-07-20 17:07:25
使用spring mvc提供restful風(fēng)格的接口,實(shí)現(xiàn)前后端分離,后端只提供數(shù)據(jù)接口,而不做頁面渲染。因此可對接口做統(tǒng)一處理:
請求參數(shù)校驗(yàn) 響應(yīng)數(shù)據(jù)格式 全局異常處理通過以上統(tǒng)一處理,開發(fā)人員可專注于業(yè)務(wù)處理,把校驗(yàn),異常響應(yīng)的邏輯分離出來。
請求參數(shù)校驗(yàn):對于url中的參數(shù) 如果添加@RequestParam,但沒有傳遞該參數(shù),則拋出MissingServletRequestParameterException異常 如果添加@Max等注解,同時(shí)不滿足該條件,拋出ConstraintViolationException 或BindException異常 對于request body請求體中的參數(shù) Bean前添加@RequestBody,如果沒有請求體,拋出HttpMessageNotReadableException異常 在bean前添加@Validate注解,bean中屬性添加@Max,@NotNull等注解,即對響應(yīng)屬性進(jìn)行校驗(yàn),如果不滿足,拋出MethodArguementNotValidException @Validate內(nèi)可添加group,表明需要校驗(yàn)的操作,@Max可添加groups,當(dāng)groups包含group時(shí),則進(jìn)行校驗(yàn)。 Bean中也可自定義注解,通過實(shí)現(xiàn)ConstraintValidator接口自定義校驗(yàn)邏輯。如果校驗(yàn)失敗,會拋出MethodArgumentNotValidException異常,這些異常都被全局異常處理攔截,返回異常信息。
響應(yīng)數(shù)據(jù)格式: 建立統(tǒng)一響應(yīng)類JsonResp<T>,泛型T為業(yè)務(wù)響應(yīng)內(nèi)容,可為String,List,java bean等。定義屬性result表明響應(yīng)是否成功,響應(yīng)碼code,響應(yīng)碼信息msg。這里code及msg與全局異常處理的響應(yīng)枚舉類相對應(yīng)。 定義ResponseBodyhandler實(shí)現(xiàn)ResponseBodyAdvice接口,當(dāng)響應(yīng)類型為json時(shí),如果響應(yīng)類型為JsonResp,直接響應(yīng)給客戶端;如果不是,則new JsonResp,將響應(yīng)體set進(jìn)去,響應(yīng)給客戶端。 在controller的方法返回類型可任意定義String,List,java bean,在ResponseBodyhandler轉(zhuǎn)化為統(tǒng)一JsonResp形式。如果是流文件,則直接返回不會轉(zhuǎn)化為JsonResp形式。這樣可將響應(yīng)包裝成統(tǒng)一的JsonResp數(shù)據(jù)格式,便于前端處理。全局異常處理 建立響應(yīng)枚舉類ResponseEnum,定義業(yè)務(wù)需要的響應(yīng)碼及響應(yīng)碼信息 建立自定義異常類BaseException,繼承運(yùn)行時(shí)異常RuntimeException,初始化時(shí)設(shè)置ResponseEnum。 建立異常捕捉類GlobalExceptionAspect,類中添加@RestCOntrollerAdvice注解,使用@Exceptional捕捉參數(shù)校驗(yàn)異常和自定義異常BaseException。 最外層捕捉Exception,捕捉未定義的異常 如果遇到業(yè)務(wù)報(bào)錯(cuò),throw new BaseException(ResponseEnum.xxx),拋出自定義異常,該異常由GlobalExceptionAspect切面捕捉,統(tǒng)一響應(yīng)至客戶端 統(tǒng)一定義異常響應(yīng)碼,便于查看避免在業(yè)務(wù)代碼里進(jìn)行異常的響應(yīng),簡化代碼
這些統(tǒng)一處理的本質(zhì)是使用fliter或者aop攔截請求和響應(yīng)參數(shù)進(jìn)行通用邏輯處理,因此,可對請求進(jìn)行敏感詞過濾,參數(shù)加解密等處理,解耦業(yè)務(wù)邏輯。
以上就是spring MVC實(shí)踐需要注意的地方的詳細(xì)內(nèi)容,更多關(guān)于spring MVC實(shí)踐的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
標(biāo)簽:
Spring
相關(guān)文章:
1. asp下利用xml打包網(wǎng)站文件2. XSL簡明教程3. Jsp servlet驗(yàn)證碼工具類分享4. JavaScript css3實(shí)現(xiàn)簡單視頻彈幕功能5. IntelliJ IDEA 2020最新激活碼(親測有效,可激活至 2089 年)6. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫特效7. idea重置默認(rèn)配置的方法步驟8. Java IO字符流緩沖區(qū)實(shí)現(xiàn)原理解析9. 使用 Python 實(shí)現(xiàn)微信消息的一鍵已讀的思路代碼10. ASP.Net Core對USB攝像頭進(jìn)行截圖
排行榜
