spring MVC實踐需要注意的地方
使用spring mvc提供restful風格的接口,實現(xiàn)前后端分離,后端只提供數(shù)據(jù)接口,而不做頁面渲染。因此可對接口做統(tǒng)一處理:
- 請求參數(shù)校驗
- 響應數(shù)據(jù)格式
- 全局異常處理
通過以上統(tǒng)一處理,開發(fā)人員可專注于業(yè)務處理,把校驗,異常響應的邏輯分離出來。
請求參數(shù)校驗:
對于url中的參數(shù)
- 如果添加@RequestParam,但沒有傳遞該參數(shù),則拋出MissingServletRequestParameterException異常
- 如果添加@Max等注解,同時不滿足該條件,拋出ConstraintViolationException 或BindException異常
對于request body請求體中的參數(shù)
- Bean前添加@RequestBody,如果沒有請求體,拋出HttpMessageNotReadableException異常
- 在bean前添加@Validate注解,bean中屬性添加@Max,@NotNull等注解,即對響應屬性進行校驗,如果不滿足,拋出MethodArguementNotValidException
- @Validate內可添加group,表明需要校驗的操作,@Max可添加groups,當groups包含group時,則進行校驗。
- Bean中也可自定義注解,通過實現(xiàn)ConstraintValidator接口自定義校驗邏輯。如果校驗失敗,會拋出MethodArgumentNotValidException異常,
這些異常都被全局異常處理攔截,返回異常信息。
響應數(shù)據(jù)格式:
- 建立統(tǒng)一響應類JsonResp<T>,泛型T為業(yè)務響應內容,可為String,List,java bean等。定義屬性result表明響應是否成功,響應碼code,響應碼信息msg。這里code及msg與全局異常處理的響應枚舉類相對應。
- 定義ResponseBodyhandler實現(xiàn)ResponseBodyAdvice接口,當響應類型為json時,如果響應類型為JsonResp,直接響應給客戶端;如果不是,則new JsonResp,將響應體set進去,響應給客戶端。
- 在controller的方法返回類型可任意定義String,List,java bean,在ResponseBodyhandler轉化為統(tǒng)一JsonResp形式。如果是流文件,則直接返回不會轉化為JsonResp形式。這樣可將響應包裝成統(tǒng)一的JsonResp數(shù)據(jù)格式,便于前端處理。
全局異常處理
- 建立響應枚舉類ResponseEnum,定義業(yè)務需要的響應碼及響應碼信息
- 建立自定義異常類BaseException,繼承運行時異常RuntimeException,初始化時設置ResponseEnum。
- 建立異常捕捉類GlobalExceptionAspect,類中添加@RestCOntrollerAdvice注解,使用@Exceptional捕捉參數(shù)校驗異常和自定義異常BaseException。
- 最外層捕捉Exception,捕捉未定義的異常
- 如果遇到業(yè)務報錯,throw new BaseException(ResponseEnum.xxx),拋出自定義異常,該異常由GlobalExceptionAspect切面捕捉,統(tǒng)一響應至客戶端
統(tǒng)一定義異常響應碼,便于查看
避免在業(yè)務代碼里進行異常的響應,簡化代碼
這些統(tǒng)一處理的本質是使用fliter或者aop攔截請求和響應參數(shù)進行通用邏輯處理,因此,可對請求進行敏感詞過濾,參數(shù)加解密等處理,解耦業(yè)務邏輯。
以上就是spring MVC實踐需要注意的地方的詳細內容,更多關于spring MVC實踐的資料請關注腳本之家其它相關文章!
- SpringMVC 如何使用注解完成登錄攔截
- 淺談springMVC中controller的幾種返回類型
- springMVC向Controller傳值出現(xiàn)中文亂碼的解決方案
- 解決springmvc使用@PathVariable路徑匹配問題
- 基于SpringMVC中的路徑參數(shù)和URL參數(shù)實例
- Spring MVC 框架搭建配置方法及詳解
- SpringMVC之簡單的增刪改查示例(SSM整合)
- Spring MVC實現(xiàn)mysql數(shù)據(jù)庫增刪改查完整實例
- 詳解SpringMVC使用MultipartFile實現(xiàn)文件的上傳
- SpringMVC+MyBatis聲明式事務管理
相關文章
idea左下角的Git(Version Control)中顯示Local Changes窗口方式
在IDEA中,通過使用快捷鍵Alt+9(Windows)或Cmd+9(Mac)可以快速打開LocalChanges窗口,查看當前Git倉庫的本地變更,若此方法不可用,可嘗試進入settings,點擊VersionControl,選擇Commit,并取消Use interface的勾選2024-10-10springboot應用服務啟動事件的監(jiān)聽實現(xiàn)
本文主要介紹了springboot應用服務啟動事件的監(jiān)聽實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04PowerJob的DispatchStrategy方法工作流程源碼解讀
這篇文章主要為大家介紹了PowerJob的DispatchStrategy方法工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01JAVA LinkedList和ArrayList的使用及性能分析
JAVA LinkedList和ArrayList的使用及性能分析,這篇文章也是以JAVA List的總結。2013-11-11Spring Cloud中使用Feign,@RequestBody無法繼承的解決方案
這篇文章主要介紹了Spring Cloud中使用Feign,@RequestBody無法繼承的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10